Hva er de forskjellige typene forsamlingsspråk?


Beste svaret

Nesten alle disse svarene er svar på et annet spørsmål, nemlig hvilken type prosessor monteringsspråket støtter. Imidlertid kan et faktisk monteringsspråk, uavhengig av prosessortype, klassifiseres i tre forskjellige typer.

  1. Et grunnleggende monteringsspråk. Dette oversetter bare instruksjoner til opkoder. Ikke noe spesielt. De fleste av disse er for små innebygde maskiner. Jeg skrev en til 8080/8080 / z80 i ‘79. Det anerkjente ikke engang forrang for dets begrensede uttrykk.
  2. Et normalt eller typisk forsamlingsspråk som gjør (1), men som også inneholder pseudo-instruksjoner og direktiver som setter settkodesegmenter, kan generere datablokker og mye mer . De fleste montører er av denne karakteren.
  3. Et makromonteringsspråk. Et godt språk har et omfattende makrospråk inkludert sløyfer, erstatning og mye mer. De kan være veldig kraftige. 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 bruker i koden min for å gjøre monteringsspråk bærbart for forskjellige kompilatorer. Beklager viklingen.

;

; 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 det mange typer monteringsspråk, eller er monteringsspråk unikt?

Ja, det er mange typer, i det minste RISC (vanligvis 3-operand, last / lagring, med mange registre), og CISC (generelt 2-operand og ulikt belastning / store, kan fungere på minne uten først å laste inn i et register).

Mest populære RISC er ARM (men det er strengt tatt to eller tre arkitekturer, i det minste er ARMv8 veldig annerledes), og f.eks. MIPS en annen variant. Den mest populære CISC er x86, fra Intel (og f.eks. AMD som laget 64-biters x86-64-utvidelsen). Fortsatt i bruk en annen CISC for IBMs mainframes.

VLIW er en annen (og Intels EPIC er en slags variant av), med mange som har laget slike typer CPUer inkludert TI.

Noen obskur er en instruksjons-datamaskin – Wikipedia (OISC), for det meste en teoretisk øvelse.

Det er også null instruksjonsdatamaskin – Wikipedia (ZISC), så jeg er ikke sikker på at en samling gjelder. 🙂

Og transportutløst arkitektur – Wikipedia er den siste fra toppen av hodet mitt. Er det andre?

Av alle én instruksjonsdatamaskin -arkitektur, er TTA-arkitekturen en av få som har hatt prosessorer basert på den ble bygget, og den eneste som har prosessorer basert på den selges kommersielt.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *