Quais são os diferentes tipos de linguagens assembly?


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.

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

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *