tutoriales suma resueltos numeros lenguaje ensamblador emulador ejercicios descargar assembler assembly compiler-construction x86 llvm mips

assembly - resueltos - suma de dos numeros en mips



MIPS vs Intel x86 vs LLVM como el primer lenguaje ensamblador para aprender? (3)

¿Qué lenguaje ensamblador debo aprender como mi primer lenguaje ensamblador? MIPS (más fácil y a menudo utilizado con fines educativos), Intel x86 (omnipresente) o el lenguaje de ensamblaje portátil detrás del proyecto LLVM ?

Una ventaja para el ensamble LLVM es que puedo intentar usarlo como un ejercicio de aprendizaje para escribir un compilador simple usando LLVM como back-end en el futuro.


8085 es el procesador ideal para empezar. Los fundamentos de la mayoría de los conjuntos de instrucciones son prácticamente los mismos. Una vez que termine 8085, algo como el conjunto de instrucciones AVR podría ser interesante para estudiar (principalmente porque 8085 se basa en la arquitectura von-neumann mientras que AVR tiene una arquitectura de Harvard.

LLVM. No te aconsejaré que aprendas su lenguaje ensamblador. En primer lugar, el lenguaje funciona sobre una arquitectura hipotética que asume registros infinitos y espera un formato de SSA para el ensamblaje. Nota: LLVM es maravilloso para escribir compiladores, pero definitivamente no es bueno comenzar a aprender cosas a nivel de ensamblaje.

El conjunto completo de instrucciones x86 es demasiado complicado para interesar a cualquiera. Estoy seguro de que te aburrirías de mirar todas las instrucciones del set.

Resumen: ir por 8085


Comencé con el ensamblaje del microprocesador 8085 y luego pasé al microcontrolador 8051 .

Luego intensifiqué a 80386 y 80486 microprocesadores.

Para aprender, creo que tiene sentido partir del chip más simple y básico.


Ninguna de las anteriores. x86 es el último lenguaje ensamblador que desea aprender. MIPS es bastante educativo por una serie de razones, pero no es una buena primera instrucción establecida principalmente porque es un poco no estándar, no usa banderas, tiene ranuras de defer de rama, tienes que desaprender algunas cosas para pasar a otra procesador. MIPS tal vez segundo o tercero.

LLVM no es realmente ensamblado, es un bytecode. Tengo uno que creé solo para esto, lsasim , búscalo en GitHub. Incluso si no ejecuta los ejemplos, espere una media hora de lectura o menos. Debería dar una base para muchos otros conjuntos de instrucciones. El pulgar (sin extensiones Thumb-2 ) es bueno. MSP430 es realmente bueno, LatticeMico8 es bastante bueno. AVR no está mal. ARM es bastante bueno. Póngase cómodo con un par de tres y luego MIPS o DLX . x86 debería ser uno de los últimos, si te molestas. Si te molestas, primero aprende 8088/86 y luego ve hacia el presente.

Con cada conjunto de instrucciones se vuelve más fácil, en el tercero o cuarto, puede aprenderlo mientras lo escribe, simplemente busca las instrucciones en una tarjeta de referencia rápida, obteniendo ocasionalmente detalles de un manual completo, pero sobre todo, simplemente sacando el código ensamblador . Al menos para los sanos, hay algunos que deben investigar para comprender todas las reglas. No desea ejecutar el hardware para aprender esto, busque primero un simulador y luego, si lo desea, el hardware.

Puedes utilizar cualquier cosa como tu backend al frente (en realidad el centro). La parte frontal del compilador debe resolverse en un código interno, que no es el lenguaje ensamblador, luego del código interno al backend que es específico del destino (lenguaje ensamblador o código máquina). El centro de LLVM está publicado y es posible utilizarlo de esa manera, otros códigos intermedios / internos del compilador se eliminan en el mejor de los casos para la depuración, pero no se usan tal como están. No utilizaría la educación de ensamblaje para la mitad de un compilador. Si desea escribir un backend, comience con LLVM u otro compilador reorientable existente, y escriba un back-end para eso (el compilador vbcc es una buena opción para un primer compilador backend, u obtenga el libro LCC, o uno super simple : Pequeño-C ). Si desea escribir una interfaz, para algún lenguaje nuevo o existente, entonces LLVM probablemente no es un código interno malo para usar, los backends vienen como regalos.