¿Cuáles son los diferentes tipos de lenguajes ensambladores?


Mejor respuesta

Casi todas estas respuestas responden a una pregunta diferente, es decir, el tipo de procesador que admite el lenguaje ensamblador. Sin embargo, un lenguaje ensamblador real, independientemente del tipo de procesador, se puede clasificar en tres tipos diferentes.

  1. Un lenguaje ensamblador básico. Esto simplemente traduce las instrucciones en códigos de operación. Nada sofisticado. La mayoría de estos son para pequeñas máquinas integradas. Escribí uno para el 8080/8080 / z80 en el ‘79. Ni siquiera reconoció la precedencia por sus expresiones limitadas.
  2. Un lenguaje ensamblador normal o típico que sí (1) pero también contiene pseudoinstrucciones y directivas que establecen segmentos de código establecidos, pueden generar bloques de datos y mucho más . La mayoría de los ensambladores son de esta naturaleza.
  3. Un lenguaje ensamblador de macros. Una buena tiene un extenso lenguaje de macros que incluye bucles, sustitución y mucho más. Pueden ser muy poderosos. IBM 360 Assembler es un buen ejemplo de esto. El ensamblador MASM de Microsoft x86 / x64 también es un ejemplo de esto.

El siguiente es un ejemplo de una macro en MASM que utilizo en mi código para hacer que el lenguaje ensamblador sea portátil para diferentes compiladores. Perdón por la vuelta.

;

; 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

Respuesta

¿Hay muchos tipos de lenguaje ensamblador o lenguaje ensamblador único?

Sí, hay muchos tipos, al menos RISC (generalmente 3 operandos, carga / almacenamiento, con muchos registros) y CISC (generalmente 2 operandos y a diferencia de carga / store, puede funcionar en la memoria sin cargar primero en un registro).

El RISC más popular es ARM (pero son estrictamente dos o tres arquitecturas, al menos ARMv8 es realmente diferente) y, por ejemplo, MIPS otra variante. El CISC más popular es x86, de Intel (y por ejemplo, AMD que hizo la extensión x86-64 de 64 bits). Todavía se usa otro CISC para mainframes de IBM.

VLIW es otro (y el EPIC de Intel es una especie de variante), y muchos han fabricado este tipo de CPU, incluido TI.

Algunos oscuro es una computadora con un conjunto de instrucciones: Wikipedia (OISC), principalmente un ejercicio teórico.

También hay equipo con conjunto de instrucciones cero – Wikipedia (ZISC), por lo que no estoy seguro de que se aplique un ensamblado. 🙂

Y arquitectura activada por transporte – Wikipedia es la última que tengo en la cabeza. ¿Hay otras?

De todas las arquitecturas de computadora de un conjunto de instrucciones , la arquitectura TTA es una de las pocas que ha tenido procesadores basados ​​en que construyó, y el único que tiene procesadores basados ​​en él se vende comercialmente.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *