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