Jaké jsou různé typy montážních jazyků?


Nejlepší odpověď

Téměř všechny tyto odpovědi odpovídají na jinou otázku, konkrétně na typ procesoru, který montážní jazyk podporuje. Skutečný jazyk sestavení však bez ohledu na typ procesoru lze rozdělit do tří různých typů.

  1. Základní jazyk sestavení. Tím se pouze překládají pokyny do opcodes. Nic fantastického. Většina z nich je určena pro malé vestavěné stroje. Jeden pro 8080/8080 / z80 jsem napsal v roce 1979. Neuznával ani prioritu pro své omezené výrazy.
  2. Normální nebo typický montážní jazyk, který ano (1), ale také obsahuje pseudonávody a směrnice, které nastavují segmenty kódu sady, mohou generovat datové bloky a mnoho dalšího . Většina assemblerů je této povahy.
  3. Jazyk sestavování maker. Dobrý má rozsáhlý makro jazyk včetně smyček, substituce a mnoho dalšího. Mohou být velmi silní. Dobrým příkladem je IBM 360 Assembler. Příkladem toho je také assembler Microsoft x86 / x64 MASM.

Následuje příklad makra v MASM, které v mém kódu používám k tomu, aby byl assembler přenositelný pro různé překladače. Omlouváme se za vše kolem.

;

; This macro declares an external data element.

;

External macro dName:req, dType:req

local dataName, xName

xName textequ

forc chr, <&dName>

ifidn <&chr>, <\_>

xName textequ

else

xName catstr xName, <&chr> ;;catstr &xName, &chr

endif

endm

if (\_borland eq true)

dataName catstr <\_>, <&dName&> ;; extern "C": Borland"s 5.5.1 C++

elseif (\_comeau eq true)

dataName catstr <\_>, <&dName&> ;; extern "C": Comeau 4.2.45.2 C++

elseif (\_gnu eq true)

dataName catstr <\_>, <&dName&> ;; extern "C": GNU 2.95.3-5 C++

elseif (\_ibm eq true)

dataName catstr <\_>, <&dName&> ;; extern "C": IBM VisualAge 4.0 C++

elseif (\_intel eq true)

dataName catstr <\_>, <&dName&> ;; extern "C": Intel 5.0.1 reference C++

elseif (\_microsoft eq true)

if (\_x32 eq true)

dataName catstr <\_>, <&dName&> ;; extern "C": Microsoft Visual Studio

else

dataName textequ <&dName&> ;; extern "C": Microsoft Visual Studio

endif

elseif (\_clr eq true)

if (\_x32 eq true)

dataName catstr <\_>, <&dName&> ;; extern "C": Microsoft Visual Studio with -clr option

else

dataName textequ <&dName&> ;; extern "C": Microsoft Visual Studio with -clr option

endif

endif

extern dataName:dType

\%xName equ dataName

endm

Odpověď

Existuje mnoho typů montážního jazyka nebo je jedinečný jazyk sestavení?

Ano, existuje mnoho typů, alespoň RISC (obecně 3-operand, load / store, s mnoha registry) a CISC (obecně 2-operand a na rozdíl od load / store, může pracovat na paměti bez předchozího načtení do registru).

Nejoblíbenější RISC je ARM (ale jsou to striktně dvě nebo tři architektury, alespoň ARMv8 je opravdu odlišný), a MIPS další varianta. Nejoblíbenější CISC je x86 od společnosti Intel (a např. AMD, která vytvořila 64bitovou příponu x86-64). Stále se používá jeden další CISC pro mainframy IBM.

VLIW je další (a Intel je EPIC jakousi variantou), přičemž mnoho z nich vyrobilo takové typy CPU včetně TI.

Některé temný je jeden počítač s instrukční sadou – Wikipedia (OISC), většinou teoretické cvičení.

K dispozici je také počítač s nulovou instrukční sadou – Wikipedia (ZISC), takže si nejsem jistý, zda platí nějaká sestava. 🙂

A architektura spouštěná transportem – Wikipedia je poslední z mé hlavy. Existují další?

Ze všech architektur jedné počítačové sady instrukcí je architektura TTA jednou z mála, která má procesory založené na postavil a jediný, kdo má na něm založené procesory, se komerčně prodával.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *