Una revelación sobre la natura de los macros

  •  
  • 109
  • 0
  • 1
  • Spanish 
Dec 20th 2011 17:08
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!