Mitkä ovat erityyppiset kokoonpanokielet?


Paras vastaus

Lähes kaikki nämä vastaukset vastaavat eri kysymykseen, nimittäin prosessorityyppiä, jota kokoonpanokieli tukee. Todellinen kokoonpanokieli voidaan prosessorityypistä riippumatta kuitenkin luokitella kolmeen eri tyyppiin.

  1. Peruskokoonpanokieli. Tämä vain kääntää ohjeet opcodeiksi. Ei mitään hienoa. Suurin osa näistä on tarkoitettu pieniin upotettuihin koneisiin. Kirjoitin yhden mallille 8080/8080 / z80 vuonna ’79. Se ei edes tunnistanut rajoitettujen lausekkeiden etusijaa.
  2. Normaali tai tyypillinen kokoonpanokieli, joka tekee (1) mutta sisältää myös näennäisohjeita ja direktiivejä, jotka asettavat asetetut koodisegmentit, voi luoda tietolohkoja ja paljon muuta . Useimmat kokoonpanijat ovat tämän luonteisia.
  3. Makrokokoonpanokieli. Hyvällä kielellä on laaja makrokieli, joka sisältää silmukoita, korvauksia ja paljon muuta. Ne voivat olla erittäin voimakkaita. IBM 360 Assembler on hyvä esimerkki tästä. Microsoft x86 / x64 MASM -kokoonpanija on myös esimerkki tästä.

Seuraava on esimerkki MASM: n makrosta, jota käytän koodissani tekemään kokoonpanokielen kannettavaksi eri kääntäjille. Anteeksi käärimisen.

;

; 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

Vastaus

Onko monenlaisia ​​asennuskieliä, vai onko kokoonpanokieli ainutlaatuinen?

Kyllä, on olemassa monia tyyppejä, ainakin RISC (yleensä 3-operandi, load / store, monilla rekistereillä) ja CISC (yleensä 2-operandi ja toisin kuin kuorma) / store, voi toimia muistissa lataamatta ensin rekisteriä).

Suosituin RISC on ARM (mutta se on ehdottomasti kaksi tai kolme arkkitehtuuria, ainakin ARMv8 on todella erilainen), ja esim. MIPS toinen variantti. Suosituin CISC on x86, Inteliltä (ja esim. AMD, joka teki 64-bittisen x86-64-laajennuksen). Vielä käytössä yksi toinen CISC IBM: n keskusyksiköissä.

VLIW on toinen (ja Intelin EPIC eräänlainen muunnos), ja monet ovat tehneet tällaisia ​​suorittimia, mukaan lukien TI.

Jotkut hämärä on yksi ohjeistettu tietokone – Wikipedia (OISC), enimmäkseen teoreettinen harjoitus.

Siellä on myös nollakäskyjoukko – Wikipedia (ZISC), joten en ole varma, onko kokoonpano voimassa. 🙂

Ja liikenteen laukaisema arkkitehtuuri – Wikipedia on viimeinen pääni yläosasta. Onko muita?

Kaikista yhden komentojoukon tietokonearkkitehtuureista TTA-arkkitehtuuri on yksi harvoista, jolla on ollut prosessoreita se rakensi, ja ainoa, jolla on siihen perustuvia prosessoreita, myytiin kaupallisesti.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *