typ dyrektywy | NASM | FASM |
---|---|---|
deklaracje danych |
NASM: db, dw, dd, dq, dt |
FASM: db, dw/du, dd, dp/df, dq, dt |
rezerwacja niezainicjalizowanej pamięci |
NASM: resb, resw, resd, resq, rest |
FASM: rb, rw, rd, rp/rf, rq, rt |
deklaracje tablic |
NASM:
TIMES 10 db "$" TIMES 25*34 db/dw/dd/dp/df/dq/dt 0 resb/resw/resd/resq/rest 25*34 |
FASM:
TIMES 10 db "$" TIMES 25*34 db/dw/dd/dp/df/dq/dt 0 rb/rw/rd/rp/rf/rq/rt 25*34 |
operacje logiczne |
NASM: +, -, *, /, %, |, ^, &, <<, >>, ~ |
FASM: +, -, *, /, mod, or, xor, and, shl, shr, not |
deklaracje stałych |
NASM: %define, %idefine, %xdefine,
%xidefine, equ |
FASM: =, equ |
etykiety anonimowe |
NASM: nie ma |
FASM: @@, @b/@r, @f |
makra |
NASM: %macro, %imacro nazwa ilosc_arg ... %endm |
FASM: macro nazwa arg {...} |
kompilacja warunkowa |
NASM: %if, %if(n)def, %elif, %else, %endif |
FASM: if, else if, else, end if |
struktury |
NASM: struc nazwa ... endstruc |
FASM: struc nazwa {...} |
symbole zewnętrzne |
NASM: extern, global |
FASM: extrn, public |
segmenty |
NASM: segment nazwa, section nazwa |
FASM: ELF: section "nazwa" executable/writeable ELF executable: segment readable/writeable/executable |
typowy początek linkowanego programu linuksowego |
NASM: section .text global _start _start: |
FASM: format ELF section ".text" executable public _start _start: |
typowy początek nielinkowanego programu linuksowego |
NASM: nie ma, zawsze trzeba linkować |
FASM: format ELF executable segment readable executable |
typ programu | NASM | FASM |
---|---|---|
binarny |
nasm -f bin -o prog.bin prog.asm |
fasm prog.asm prog.bin |
obiekt ELF |
nasm -f elf -o prog.o prog.asm |
fasm prog.asm prog.o |
wykonywalny ELF |
nasm -f elf -o prog.o prog.asm ld -s -o prog prog.o |
fasm prog.asm prog |