AT&T kontra NASM

https://chacker.pl/

Dwie główne formy składni asemblera to AT&T i Intel. Składnia AT&T jest używana przez asembler GNU (gaz), zawarty w pakiecie kompilatorów gcc i jest często używana przez programistów Linuksa. Spośród asemblerów składni Intela najczęściej używany jest Netwide Assembler (NASM). Format NASM jest używany przez wiele asemblerów i debugerów Windows. Te dwa formaty dają w efekcie ten sam język maszynowy; istnieje jednak kilka różnic w stylu i formacie:

  • Operandy źródłowe i docelowe są odwrócone, a początek komentarza oznacza się różnymi symbolami:
  • Format NASM CMD <dest>, <source> <; komentarz>
  • Format AT&T CMD <źródło>, <docelowy> <#komentarz>
  • W formacie AT&T procent przed rejestrami; NASM nie. % oznacza „argument pośredni”.
  • W formacie AT&T znak $ znajduje się przed wartościami literału; NASM nie. Znak $ oznacza „operand bezpośredni”.
  • AT&T obsługuje odniesienia do pamięci inaczej niż NASM.

W tej sekcji przedstawiono składnię i przykłady w formacie NASM dla każdego polecenia. Dodatkowo pokazuje przykład tego samego polecenia w formacie AT&T dla porównania. Ogólnie rzecz biorąc, dla wszystkich poleceń używany jest następujący format:

<optional label:> <mnemonic> <operands> <optional comments>

Liczba operandów (argumentów) zależy od polecenia (mnemonika). Choć instrukcji montażu jest wiele, wystarczy opanować tylko kilka. Zostały one opisane w poniższych sekcjach.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *