Vilka är de olika typerna av monteringsspråk?


Bästa svaret

Nästan alla dessa svar svarar på en annan fråga, nämligen vilken typ av processor samlingsspråket stöder. Ett verkligt monteringsspråk kan dock klassificeras i tre olika typer, oavsett processortyp.

  1. Ett grundläggande monteringsspråk. Detta översätter bara instruktioner till opkoder. Inget märkvärdigt. De flesta av dessa är för små inbäddade maskiner. Jag skrev en för 8080/8080 / z80 79. Det kände inte ens prioritet för sina begränsade uttryck.
  2. Ett normalt eller typiskt sammansättningsspråk som gör (1) men också innehåller pseudoinstruktioner och direktiv som ställer in uppsättning kodsegment, kan generera datablock och mycket mer . De flesta montörer är av den här typen.
  3. Ett makromonteringsspråk. En bra har ett omfattande makrospråk inklusive slingor, substitution och mycket mer. De kan vara väldigt kraftfulla. IBM 360 Assembler är ett bra exempel på detta. Microsoft x86 / x64 MASM-samlare är också ett exempel på detta.

Följande är ett exempel på ett makro i MASM som jag använder i min kod för att göra monteringsspråk bärbart för olika kompilatorer. Ledsen för omslaget.

;

; 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

Svar

Finns det många typer av monteringsspråk, eller är monteringsspråk unikt?

Ja, det finns många typer, åtminstone RISC (vanligtvis 3-operand, last / lagring, med många register) och CISC (vanligtvis 2-operand och till skillnad från belastning / butik, kan fungera på minnet utan att först laddas till ett register. MIPS en annan variant. Mest populära CISC är x86, från Intel (och t.ex. AMD som gjorde 64-bitars x86-64-tillägget). Fortfarande används en annan CISC för IBM: s mainframes.

VLIW är en annan (och Intels EPIC är en slags variant av), med många som har gjort sådana typer av processorer inklusive TI.

Vissa obskur är en instruktionsdator – Wikipedia (OISC), mestadels en teoretisk övning.

Det finns också noll instruktionsdator – Wikipedia (ZISC), så jag är inte säker på att en församling gäller. 🙂

Och transportutlöst arkitektur – Wikipedia är den sista från toppen av mitt huvud. Finns det andra?

Av alla en instruktionsuppsättningsdator -arkitekturer är TTA-arkitekturen en av de få som har haft processorer baserade på den byggdes och den enda som har processorer baserade på den säljs kommersiellt.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *