Central Docs
Catálogo Inicio

06. Ensamblador de módulo y condicionales

Un bloque de módulo no pertenece a ninguna función y no usa return asm ni placeholders:

#prep assembler module "gas-intel"
    .section .rodata,"a"
    answer:
        .long 42
#end

Debe estar al nivel del módulo. Se escribe como una unidad ASM independiente, sin que Bagron añada símbolo de función, prólogo, epílogo o contrato de registros. Las llaves { y } están prohibidas en este modo.

El preprocesador admite condiciones simples para seleccionar declaraciones Bagron:

#if OS, "windows"
func fence() void:
    return
#elif ARCH, "amd"
func fence() void:
    return
#end

Se admiten #if, #elif, #else y #end con OS o ARCH. Los bloques condicionales no se pueden anidar. Como #end es también el cierre de #prep, no coloques un bloque de función o de módulo dentro de un #if: su #end cerraría el bloque condicional antes de la extracción ASM. Selecciona el módulo o la fuente apropiada antes de preparar el ensamblador. Ningún #end debe recibir argumentos.