giovedì 25 settembre 2014

Emulatore assembler

Ecco un programmino semplice che emula il linguaggio assembler x86. Scritto da Andrè Garcia, è un progetto simpatico su cui potete mettere mano:
Ha perfino un monito su cui potete vedere il risultato. Lo potete scarica da qui: http://tinyurl.com/p48nhwd
Ha quattro registri: ax, bx, cx, dx. Ecco una serie di comandi che accetta:
  • GET - chiede un numero
  • PUT - motra il contenuto del registro ax 
  • MOV - copia il contenuto al registro target:
    • MOV <target>, <register>
    • MOV <target>, <number>
  • CMP - confronta i registri
  • JA - salta, se maggiore
  • JB - salta, se minore
  • JAE - salta se uguale o maggiore
  • JBE - salta se uguale o minore
  • JNA - salta se non più grande 
  • JNB - salta, se non più piccolo
  • JE - salta, se uguale
  • JNE - salta, se non uguale
  • JMP - salta!
  • XCHG - scambia due registri
  • ADD - somma
  • SUB - sottrae
  • AND - bitwise and
  • OR - bitwise or
  • XOR - exclusive or
  • CALL - chiama una subroutine
  • RET - ritorna da una subroutine
  • HALT - ferma il programma
  • SETE - set 1/0 if equal
  • SETNE - set 1/0 if not equal
  • SETLE - set 1/0 if lower or equal
  • SETL - set 1/0 if lower
  • SETG - set 1/0 if greater
  • SETGE - set 1/0 if greater or equal
  • SETNLE - set 1/0 if not lower or equal
  • SETNL - set 1/0 if not lower
  • SETNGE - set 1/0 if not greater or equal
  • SETNG - set 1/0 if not greater