Witaj świecie dla różnych kompilatorów (NASM, FASM, Gnu As). Assembler - różnice w składni Intel i AT&T. Miłosz Grzegorzewski
Agenda 1. Opis NASM oraz „Hello world” 2. Opis FASM oraz „Hello world” 3. Opis GNU Assembler oraz „Hello world” 4. Różnice w składni Intela i AT&T.
NASM Netwide Assembler to wolnodostępny asembler dla języka Asembler x 86. Został stworzony przez Simona Tathama jako alternatywa dla GNU Assembler z pakietu binutils, który został zaprojektowany jako backend dla kompilatorów, w związku z czym nie posiada odpowiedniego interfejsu użytkownika. Obecnie NASM rozwijany jest w ramach Source. Forge. Składnia języka używana przez NASM jest składnią Intela z niewielkimi modyfikacjami. NASM jest dostępny na zasadach GNU General Public License oraz na własnej licencji.
NASM – hello world na windowsie org 100 h %define cr 13 %define lf 10 %define nwln cr, lf section. data Hello. World db "Hello World!", nwln, '$' section. text global _start: mov ah, 9 mov dx, Hello. World int 21 h mov ax, 4 C 00 h int 21 h
NASM – hello world na windowsie org 100 h ; określa gdzie dany program oczekuje, że zostanie załadowany do pamięci
NASM – hello world na windowsie section. data Hello. World db "Hello World!", nwln, '$' segment o nazwie ". data". tekst to nazwa naszej zmiennej, db to typ naszej zmiennej (db - 1 bajt) nwln ; to wartość początkowa dla naszej zmiennej. znakiem $ ; oznaczamy koniec naszego ciągu (dla migrantów z C/C++ jest to odpowiednik znaku '