CitarSi te olvidaste de una variable al comienzo, ¡fuiste!... No se pueden manipular las direcciones de memoria como el asm las manipula. Quieres agregar algo en el medio del code, una mitad funciona y la otra no.Porque debes arreglar los offsets. Si de un momento a otro agregas 15 bytes en medio y estabas programando en codigo de máquina, entonces todas las direcciónes posteriores se correrán 15 bytes, y sus referencias tambien.
No obstante, si haces un programa en ASM para que funcione como en C usaras pilas locales a las funciónes. y accederás con la base de la pila más el offset de la variable en la función, por lo que esas variables no darán problemas.
CitarEntre asm y c, los programas en asm son los mas óptimosPero un buen programador en C sabe que es posible tener todo el acceso de bajo nivel y la rentabilidad de ASM desde C... depende que tanto lo conozcas
@krackwar: estas muy cerca
CitarUn enesamblador funciona primero aplica las macros y remplasa las constantesAja...sisi, obviamente despues de hacer las inclusiones de archivos...
Citarhace el paso de cada instruccion a byte , cada ves que se usa una variable ees sumplatada por su posicion .Eso depende mucho del ensamblador y del modo... en binario puro sería algo muy similar a eso, pero en un ejecutable con formato se deben hacer muchas cosas más.
Los símbolos, como los Labels, son correctamente ubicados como offsets dentro del ejecutable... luego todos los offsets calculados son reemplazados por constantes literales (que es lo que encuentras al desensamblar), y entonces son ensamblados por el componente más primitivo que simplemente ensambla instrucciónes que vienen con sus operadores literales.