Legjobb válasz
Ezeknek a válaszoknak csaknem mindegyike más kérdésre ad választ, nevezetesen az összeszédnyelv által támogatott processzor típusára. Azonban egy tényleges összeállítási nyelv, a processzor típusától függetlenül, három különböző típusba sorolható.
- Egy alapszerelési nyelv. Ez csak lefordítja az utasításokat opkódokra. Semmi csicsás. Ezek többsége apró beágyazott gépekre vonatkozik. A 8080/8080 / z80-hoz írtam egyet ’79 -ben. Nem is ismerte el a korlátozott kifejezések elsőbbségét.
- Egy normál vagy tipikus összeállítási nyelv, amely (1), de tartalmaz pszeudo-utasításokat és irányelveket is, amelyek beállított kódszegmenseket állítanak elő, adatblokkokat generálhat és még sok minden mást. . A legtöbb összeszerelő ilyen természetű.
- Makró összeállítási nyelv. A jó nyelvnek kiterjedt makrónyelve van, beleértve a ciklusokat, a helyettesítést és még sok mást. Nagyon erősek lehetnek. Erre jó példa az IBM 360 Assembler. Erre példa a Microsoft x86 / x64 MASM assemblerje is.
Az alábbiakban bemutatunk egy példát a MASM makrójára, amelyet a kódomban használok az összeállítási nyelv hordozhatóvá tételéhez a különböző fordítók számára. Elnézést a körültekintésért.
;
; 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
Válasz
Sokféle szerelési nyelv létezik, vagy egyedülálló az összeállítási nyelv?
Igen, sok típus létezik, legalábbis a RISC (általában 3 operandusú, load / store, sok regiszterrel) és a CISC (általában 2 operandusos és a terheléstől eltérően) / store, működhet a memórián anélkül, hogy először be kellene tölteni egy regiszterbe).
A legnépszerűbb RISC az ARM (de szigorúan két vagy három architektúra, legalábbis az ARMv8 valóban más), és pl. MIPS egy másik változata. A legnépszerűbb CISC az Intel x86-os (és pl. Az AMD, amely a 64 bites x86-64 kiterjesztést készítette). Még mindig egy másik CISC-t használ az IBM nagygépeihez.
A VLIW egy másik (és az Intel EPIC egyfajta változata), sokan készítettek ilyen típusú CPU-kat, beleértve a TI-t is.
Néhány homályos egy utasításkészlet számítógép – Wikipédia (OISC), többnyire elméleti gyakorlat.
Van még nulla utasításkészletű számítógép – Wikipédia (ZISC), ezért nem vagyok biztos benne, hogy egy összeállítás érvényes-e. 🙂
És a közlekedés által kiváltott architektúra – a Wikipédia az utolsó a fejem tetején. Vannak még mások?