기계 언어 컴파일러의 작은 버그를 수정한 방법 0100 1111 0100 1011

오픈 소스는 대단한 것입니다.

This great thing is that it doesn't matter if you know the project's code or not. You can still solve bugs.




프로젝트에 대해.



GitHub Link

포크된 웹 브라우저에서 실행되는 JavaScript 6502 어셈블러 및 시뮬레이터from:

향상된 기능에는 속도 제어(슬라이더), 로드/저장 버튼, 80x25자 메모리 매핑 터미널 화면 및 기본 ROM 루틴이 포함됩니다.

호스팅된 사본은 http://6502.cdot.systems에서 사용할 수 있습니다. "Notes"버튼을 클릭하고 디스플레이 하단에 있는 텍스트 상자를 스크롤하여 일부 샘플 코드에 대한 링크를 포함한 기본 문서를 확인하십시오. 에뮬레이터 내에서 실행할 일부 샘플 코드는 https://github.com/ctyler/6502js-code에서 사용할 수 있습니다.





간단한 어셈블러의 GUI가 위의 이미지에서 어떻게 보이는지 확인할 수 있습니다. 버그는 "업로드 버튼"에 있었습니다. 컴파일러는 누군가 새 파일을 업로드하고 실행하려고 할 때 그의 모든 상태를 초기 위치로 설정하지 않았습니다. 처음에는 문제를 해결하는 방법에 대한 아이디어가 없었지만 JS를 사용하면 항상 ToolBars부터 시작합니다.
![컴파일러( https://dev-to-uploads.s3.amazonaws.com/uploads/articles/aqnpnoyh388whs3xqc3q.png )

파일 업로드에 대해 응답하는 줄을 찾은 후 전체 리포지토리 폴더에서 비슷한 것을 검색하기 시작했고 다음 줄을 찾았습니다.


여기에서 "업로드"기능이 필요하다는 것을 알 수 있습니다.

function upload() {
    var file = document.getElementById("uploadFilename").files[0];
    var fileReader = new FileReader();
    fileReader.onload = function(fileLoadedEvent) 
    {
        var textFromFileLoaded = fileLoadedEvent.target.result;
        document.getElementById("code").value = textFromFileLoaded;
        simulator.stop();
    };
        fileReader.readAsText(file, "UTF-8");
    }


이 기능을 찾아보니 UI 초기화에 대응하는 프로세스가 거기서 호출되지 않는다는 것을 알게 되었습니다. 이 함수는 어떻게 호출할 수 있습니까? 초기화 기능을 찾았습니다.

 function initialize() {
    stripText();
    ui.initialize();
    display.initialize();
    screen.initialize();
    simulator.reset();

    $node.find('.assembleButton').click(function() {
      assembler.assembleCode();
    });
    $node.find('.runButton').click(simulator.runBinary);
    $node.find('.runButton').click(simulator.stopDebugger);
    $node.find('.resetButton').click(simulator.reset);
    $node.find('.hexdumpButton').click(assembler.hexdump);
    $node.find('.disassembleButton').click(assembler.disassemble);
    $node.find('.downloadButton').click(assembler.download);
    $node.find('.uploadButton').click(assembler.upload);
    $node.find('.debug').change(function() {
      var debug = $(this).is(':checked');
      if (debug) {
        ui.debugOn();
        simulator.enableDebugger();
      } else {
        ui.debugOff();
        simulator.stopDebugger();
      }
    });


몇 가지 확인 후 이 프로세스를 업로드 기능에 호출했고 마침내 모든 것이 작동했습니다!

function upload() {
    var file = document.getElementById("uploadFilename").files[0];
    var fileReader = new FileReader();
    fileReader.onload = function(fileLoadedEvent) 
    {
        var textFromFileLoaded = fileLoadedEvent.target.result;
        document.getElementById("code").value = textFromFileLoaded;
        simulator.stop();
        _**ui.initialize(); **_
    };
        fileReader.readAsText(file, "UTF-8");
    }


결론



⚠️ 개발자용 오픈 소스 블로그 게시물: 링크

연결



🖇 자식 https://github.com/aserputov
🖇 트위터

p.s 이 글은 제 SPO 수업 Lab 3 과제를 위해 작성되었습니다.

좋은 웹페이지 즐겨찾기