EasyASM, 어셈블리 램프 업

나는 모교에서 컴파일러 수업을 들었을 때를 기억하고 있었고, 컴파일 프로세스의 핵심 개념과 더 나아가 어셈블리 언어를 더 잘 이해하는 데 도움이 되는 오픈 소스 프로젝트를 확인하기로 결정했습니다.

응! 저수준의 프로그래밍 언어에 겁먹는 사람도 있겠지만 결국에는 그 자체로 복잡성을 지닌 또 다른 언어일 뿐입니다.

먼저 알아야 할 것은 다양한 어셈블리 언어가 있으며 여기에 그 중 일부를 나열할 것입니다.
  • MIPS32
  • X86
  • ARM
  • X64
  • 가족에 새로 추가됨 WebAssembly

  • X86용으로 널리 사용되는 유명한 어셈블러는 NASM입니다.

    하지만 교육용으로



    MIPS32 및 X86 명령어 세트EasyASM의 인터프리터인 이 멋진 오픈 소스 프로젝트를 여러분 모두에게 소개하기 위해 왔습니다.


    아이디어 / EasyASM


    어셈블러 언어를 쉽게 배울 수 있는 MIPS32 및 x86 시뮬레이터





    EasyASM


    EasyASM은 MIPS32 및 x86 ISA의 하위 집합을 위한 간단한 시뮬레이터입니다. 주요 목적은 프로세스를 쉽게 만드는 것입니다.
    어셈블러 언어를 배우는 것. 이를 위해 EasyASM은 간단한 명령줄 인터페이스를 제공합니다.
    사용자는 어셈블러 프로그램을 사용하지 않고도 어셈블러 명령어를 입력하고 테스트할 수 있습니다. 프로그램
    오류 발생 시 사용자에게 즉각적인 피드백을 제공합니다. 그 외에도 시뮬레이터는 몇 가지 유용한 명령을 제공합니다.
    명령 섹션에 설명되어 있습니다.

    설치


    프로그램을 설치하려면 C++ 컴파일러와 소스 코드가 필요합니다. 둘 다 가지고 있으면 입력 만하면됩니다
    소스 코드가 있는 디렉토리 및 명령 입력

    Linux(Debian 기반 배포판)


    $ make deps
    $ make

    윈도우

    It might work if you use msys

    용법

    Once you have the simulator compiled, you can run it by typing ./EasyASM in the source…

    It’s a project where you can play around with a vast instruction set for either MIPS32 or X86 and have good feedback of what’s going on. Also you have available some helper instructions to pre-fill a register with a desired value and then use it later in the code.

    I've made very few contributions to it, the most recent being an easy way to set it up and running in your Debian based distribution.

    약간의 역사

    The project was made by a professor I had during my major and was developed while we were having lessons with him, so we were pretty much like Beta Testers 😆 at the time.

    A few of us made very few contributions back then, and it wasn't until recently that I came back to see if the project was still alive and noticed there were some changes which weren't quite well explained in the Readme.md file about:

    • specific i386 dependencies
    • custom version of Lemon

    It really wasn't easy to set the project up and running at once, so I decided to figure out the needed dependencies and the custom version of Lemon myself.

    I added a script to install all those dependencies easily just by executing one shell command... Yeah, I went through all that pain to simplify that process to future users.

    설정

    $ git clone https://github.com/ideras/EasyASM.git
    $ cd EasyASM
    $ make deps
    $ make
    $ cp ./EasyASM /usr/bin/EasyASM
    


    마지막 명령은 선택 사항입니다. 다른 CLI 프로그램과 같이 현재 있는 디렉터리에서 사용하거나 프로젝트 폴더에서 직접 쉽게 사용할 수 있도록 대부분 거기에 있습니다.

    달리기



    위의 모든 단계를 따랐다면 다음을 입력하십시오.

    $ EasyASM
    


    마지막 단계를 건너뛴 경우:

    $ cd </path/where/you/cloned/the/project>
    $ ./EasyASM
    


    콘솔에서 다음 출력을 예상해야 합니다.
    (타이핑을 시작하기를 기다리는 깜박이는 커서가 있습니다)

    --- EasyASM MIPS32 mode (big endian) ----
    
    Global base address = 0x10000000
    Stack pointer address = 0x7fffeffc
    Global memory size = 256 words
    Stack size         = 256 words
    
    ASM> _
    


    용법



    기본 모드는 MIPS32(big endian)입니다.

    X86(리틀 엔디안)으로 실행하려면: $ EasyASM --x86

    EasyASM의 자체 도우미 명령


  • #set 값을 레지스터 또는 메모리 주소에 저장
  • #show 레지스터 또는 메모리 주소에 저장된 내용 표시
  • #exec 전체 어셈블러 파일 실행
  • quit 명령줄 프롬프트를 종료합니다
  • .

    이제 EasyASM에서 실행되는 간단한 예를 살펴보겠습니다.

    ASM> start:
    ASM> #set $t0 = 10
    ASM> #set $t1 = 20
    ASM> lbl_add1: add $t2, $t0, $t1
    $t2 = 0x1E 30 30
    ASM> #show $t2
    $t2 = 30
    ASM> _
    


    계산 작업 직후 EasyASM은 세 가지 형식으로 레지스터에 저장된 결과 값을 표시합니다.[target register] = [HEX] [Signed Decimal] [Unsigned Decimal]
    참고: 레이블을 추가할 수 있지만 not existing 레이블로 이동할 수 없으므로 프로그램에서 더 아래 레이블로 이동하려면 file.asm를 사용하고 #exec 명령으로 실행하는 것이 좋습니다.


    누군가가 이 프로젝트의 힘을 최대한 활용할 수 있도록 이것이 도움이 될 수 있기를 바랍니다.

    읽어 주셔서 감사합니다! 😊

    좋은 웹페이지 즐겨찾기