Quels sont les différents types de langages dassemblage?


Meilleure réponse

Presque toutes ces réponses répondent à une question différente, à savoir le type de processeur supporté par le langage dassemblage. Cependant, un véritable langage dassemblage, quel que soit le type de processeur, peut être classé en trois types différents.

  1. Un langage dassemblage de base. Cela traduit simplement les instructions en opcodes. Rien dextraordinaire. La plupart dentre eux sont destinés à de minuscules machines intégrées. Jen ai écrit un pour le 8080/8080 / z80 en 79. Il na même pas reconnu la priorité pour ses expressions limitées.
  2. Un langage dassemblage normal ou typique qui fait (1) mais contient également des pseudo-instructions et des directives qui définissent des segments de code définis, peut générer des blocs de données et bien plus encore . La plupart des assembleurs sont de cette nature.
  3. Un langage dassemblage de macro. Un bon a un langage macro étendu comprenant des boucles, des substitutions et bien plus encore. Ils peuvent être très puissants. Lassembleur IBM 360 en est un bon exemple. Lassembleur MASM Microsoft x86 / x64 en est également un exemple.

Ce qui suit est un exemple de macro dans MASM que jutilise dans mon code pour rendre le langage dassemblage portable pour différents compilateurs. Désolé pour le bouclage.

;

; 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

Réponse

Existe-t-il de nombreux types de langage dassemblage, ou langage dassemblage unique?

Oui, il existe de nombreux types, au moins RISC (généralement 3 opérandes, load / store, avec de nombreux registres), et CISC (généralement 2 opérandes et contrairement à load / store, peut fonctionner sur la mémoire sans chargement préalable dans un registre).

Le RISC le plus populaire est ARM (mais cest strictement deux ou trois architectures, au moins ARMv8 est vraiment différent), et par exemple MIPS une autre variante. Le CISC le plus populaire est x86, dIntel (et par exemple AMD qui a créé lextension 64 bits x86-64). Encore en utilisation un autre CISC pour les mainframes dIBM.

VLIW en est un autre (et lEPIC dIntel une sorte de variante de), beaucoup ayant fabriqué de tels types de processeurs, y compris TI.

Certains obscure est un ordinateur de jeu dinstructions – Wikipedia (OISC), principalement un exercice théorique.

Il y a aussi ordinateur de jeu dinstructions zéro – Wikipedia (ZISC), donc je ne suis pas sûr quun assemblage sapplique. 🙂

Et architecture déclenchée par le transport – Wikipédia est la dernière du haut de ma tête. Y en a-t-il dautres?

De toutes les architectures à un jeu dinstructions , larchitecture TTA est lune des rares à avoir des processeurs basés sur il a été construit, et le seul à avoir des processeurs basés sur celui-ci est vendu dans le commerce.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *