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