Una revelación sobre la natura de los macros
- 109
- 0
- 1
Lo siento, pero esta entrada va a ser un poco técnico... ^^;
Pero lo que descubrí ahora me entusiasma muchísimo. Estoy escribiendo un ensamblador para el 65816. Supongamos que tenemos una instrucción así:
adc #12
Al encontrar tal instrucción, normalmente el ensamblador produce inmediatamente el opcode correspondiente: 69 0C. Pero, ¿y si esta instrucción está en el cuerpo de un macro? No se puede producir nada hasta la invocación. Necesitamos guardar esta instrucción, pero, ¿cómo hacerlo si no hay ninguna representación intermedia?
Y se me ocurrió la solución: ¡meter el código que emite el opcode en una clausura! De esta forma un macro es simplemente una serie de clausuras. Al invocar el macro, sólo hay que llamar todas las clausuras. ¡Voilà! Ahí tienes los opcodes.
¡Es magia!
Pero lo que descubrí ahora me entusiasma muchísimo. Estoy escribiendo un ensamblador para el 65816. Supongamos que tenemos una instrucción así:
adc #12
Al encontrar tal instrucción, normalmente el ensamblador produce inmediatamente el opcode correspondiente: 69 0C. Pero, ¿y si esta instrucción está en el cuerpo de un macro? No se puede producir nada hasta la invocación. Necesitamos guardar esta instrucción, pero, ¿cómo hacerlo si no hay ninguna representación intermedia?
Y se me ocurrió la solución: ¡meter el código que emite el opcode en una clausura! De esta forma un macro es simplemente una serie de clausuras. Al invocar el macro, sólo hay que llamar todas las clausuras. ¡Voilà! Ahí tienes los opcodes.
¡Es magia!

Lo siento, pero esta entrada va a ser un poco técnica...
Es que lo que acabo de descubrir me entusiasma muchísimo. ("Es que" para no repetir "pero")
Al invocar al macro, sólo hay que llamar a todas las clausuras.