| 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 |