Melyek a különféle típusú összeállítási nyelvek?


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

  1. 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.
  2. 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ű.
  3. 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?

Az összes egy utasításkészletű számítógép architektúra közül a TTA architektúra azon kevesek egyike, amelyeknek processzorai vannak építette, és az egyetlen, amelyen alapuló processzorok vannak, kereskedelmi forgalomban kapható.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük