Melhor resposta
Quase todas essas respostas respondem a uma pergunta diferente, a saber, o tipo de processador que a linguagem assembly suporta. No entanto, uma linguagem assembly real, independentemente do tipo de processador, pode ser classificada em três tipos diferentes.
- Uma linguagem assembly básica. Isso apenas traduz as instruções em opcodes. Nada chique. A maioria deles é para pequenas máquinas embarcadas. Escrevi um para o 8080/8080 / z80 em 79. Ele nem mesmo reconhecia precedência para suas expressões limitadas.
- Uma linguagem assembly normal ou típica que faz (1), mas também contém pseudo-instruções e diretivas que definem segmentos de código de conjunto, pode gerar blocos de dados e muito mais . A maioria dos montadores são desta natureza.
- Uma linguagem de macro assembly. Um bom tem uma linguagem macro extensa incluindo loops, substituição e muito mais. Eles podem ser muito poderosos. O IBM 360 Assembler é um bom exemplo disso. O assembler MASM Microsoft x86 / x64 também é um exemplo disso.
A seguir está um exemplo de uma macro em MASM que uso em meu código para tornar a linguagem assembly portátil para diferentes compiladores. Desculpe pela conclusão.
;
; 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
Resposta
Existem muitos tipos de linguagem assembly ou linguagem assembly única?
Sim, existem muitos tipos, pelo menos RISC (geralmente 3 operando, carregar / armazenar, com muitos registros) e CISC (geralmente 2 operando e carga diferente / store, pode funcionar na memória sem primeiro carregar em um registro).
O RISC mais popular é ARM (mas é estritamente duas ou três arquiteturas, pelo menos ARMv8 é realmente diferente), e por exemplo MIPS outra variante. O CISC mais popular é o x86, da Intel (e, por exemplo, a AMD que criou a extensão x86-64 de 64 bits). Ainda em uso um outro CISC para mainframes da IBM.
VLIW é outro (e o EPIC da Intel é uma espécie de variante de), com muitos tendo feito esses tipos de CPUs, incluindo TI.
Alguns obscuro é um computador com conjunto de instruções – Wikipedia (OISC), principalmente um exercício teórico.
Há também computador com conjunto de instruções zero – Wikipedia (ZISC), então não tenho certeza se um assembly se aplica. 🙂
E arquitetura acionada por transporte – Wikipedia é a última do topo da minha cabeça. Existem outras?
De todas as arquiteturas de um computador com conjunto de instruções , a arquitetura TTA é uma das poucas que teve processadores baseados em ele foi construído e o único que tem processadores baseados nele é vendido comercialmente.