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