Una revelación sobre la natura de los macros

PUBLIC_FLAG_#{@journal.pf_int} RSS feed of furrykef's latest journal entries 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!
Dec 20th 2011 23:00

  • Lo siento, pero esta entrada va a ser un poco técnico...
  • Lo siento, pero esta entrada va a ser un poco técnica...

 

  • Pero lo que descubrí ahora me entusiasma muchísimo.
  • Es que lo que acabo de descubrir me entusiasma muchísimo. ("Es que" para no repetir "pero")

 

  • Al invocar el macro, sólo hay que llamar todas las clausuras.
  • Al invocar al macro, sólo hay que llamar a todas las clausuras.

 
Muy bien escrito, furrykef :)

Journals Statistics

Latest entry

See more >>

Latest comments

See more >>

Entries by Month