Hvad er de forskellige typer samlingssprog?


Bedste svar

Næsten alle disse svar svarer på et andet spørgsmål, nemlig hvilken type processor samlingssproget understøtter. Dog kan et faktisk samlingssprog klassificeres i tre forskellige typer uanset processortype.

  1. Et grundlæggende samlingssprog. Dette oversætter bare instruktioner til opkoder. Intet smukt. De fleste af disse er til små indlejrede maskiner. Jeg skrev en til 8080/8080 / z80 i 79. Det anerkendte ikke engang forrang for dets begrænsede udtryk.
  2. Et normalt eller typisk samlingssprog, der gør (1) men også indeholder pseudo-instruktioner og direktiver, der indstiller sæt kodesegmenter, kan generere datablokke og meget mere . De fleste samlere er af denne art.
  3. Et makro-samlingssprog. En god en har et omfattende makro sprog inklusive sløjfer, erstatning og meget mere. De kan være meget stærke. IBM 360 Assembler er et godt eksempel på dette. Microsoft x86 / x64 MASM-samleren er også et eksempel på dette.

Følgende er et eksempel på en makro i MASM, som jeg bruger i min kode til at gøre samlesprog bærbart til forskellige kompilatorer. Undskyld for omviklingen.

;

; 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

Er der mange typer samlingssprog, eller er forsamlingssprog unikt?

Ja, der er mange typer, i det mindste RISC (generelt 3-operand, load / store, med mange registre) og CISC (generelt 2-operand og i modsætning til load / butik, kan arbejde på hukommelse uden først at indlæse i et register).

Mest populære RISC er ARM (men det er strengt to eller tre arkitekturer, i det mindste er ARMv8 virkelig anderledes), og f.eks. MIPS en anden variant. Mest populære CISC er x86 fra Intel (og fx AMD, der lavede 64-bit x86-64 udvidelse). Stadig i brug en anden CISC til IBMs mainframes.

VLIW er en anden (og Intels EPIC er en slags variant af), hvor mange har lavet sådanne typer CPUer inklusive TI.

Nogle obskur er en instruktionscomputer – Wikipedia (OISC), for det meste en teoretisk øvelse.

Der er også computer med nul instruktionssæt – Wikipedia (ZISC), så jeg er ikke sikker på, at en samling finder anvendelse. 🙂

Og transportudløst arkitektur – Wikipedia er den sidste fra toppen af ​​mit hoved. Er der andre?

Af alle en instruktions sæt computer -arkitekturer er TTA-arkitekturen en af ​​de få, der har haft processorer baseret på den blev bygget, og den eneste der har processorer baseret på den solgt kommercielt.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *