Quali sono i diversi tipi di linguaggi assembly?


Risposta migliore

Quasi tutte queste risposte rispondono a una domanda diversa, ovvero il tipo di processore supportato dal linguaggio assembly. Tuttavia, un vero linguaggio assembly, indipendentemente dal tipo di processore, può essere classificato in tre diversi tipi.

  1. Un linguaggio assembly di base. Questo traduce semplicemente le istruzioni in codici operativi. Nulla di bello. La maggior parte di questi sono per piccole macchine incorporate. Ne ho scritto uno per l8080 / 8080 / z80 nel 79. Non riconosceva nemmeno la precedenza per le sue espressioni limitate.
  2. Un linguaggio assembly normale o tipico che fa (1) ma contiene anche pseudo-istruzioni e direttive che impostano segmenti di codice impostati, può generare blocchi di dati e molto altro . La maggior parte degli assemblatori sono di questa natura.
  3. Un linguaggio di macro assembly. Uno buono ha un ampio linguaggio macro che include loop, sostituzione e molto altro. Possono essere molto potenti. LIBM 360 Assembler ne è un buon esempio. Anche lassembler MASM Microsoft x86 / x64 è un esempio di questo.

Il seguente è un esempio di una macro in MASM che utilizzo nel mio codice per rendere il linguaggio assembly portabile per diversi compilatori. Ci scusiamo per la conclusione.

;

; 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

Risposta

Esistono molti tipi di linguaggio assembly o è linguaggio assembly unico?

Sì, ci sono molti tipi, almeno RISC (generalmente a 3 operandi, load / store, con molti registri) e CISC (generalmente a 2 operandi ea differenza di load / store, può funzionare sulla memoria senza prima caricarlo in un registro).

RISC più popolare è ARM (ma è strettamente due o tre architetture, almeno ARMv8 è davvero diverso), e ad es. MIPS unaltra variante. Il CISC più popolare è x86, di Intel (e ad esempio AMD che ha realizzato lestensione x86-64 a 64 bit). Ancora in uso un altro CISC per i mainframe IBM.

VLIW è un altro (e lEPIC di Intel una sorta di variante di), con molti che hanno realizzato tali tipi di CPU tra cui TI.

Alcuni oscuro è un computer con set di istruzioni – Wikipedia (OISC), principalmente un esercizio teorico.

Cè anche computer con set di istruzioni zero – Wikipedia (ZISC), quindi non sono sicuro che si applichi un assembly. 🙂

E architettura attivata dal trasporto – Wikipedia è lultima dalla cima della mia testa. Ce ne sono altre?

Di tutte le un set di istruzioni per computer , larchitettura TTA è una delle poche che ha avuto processori basati su ha costruito e lunico che ha processori basati su di esso venduto commercialmente.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *