Central Docs
Catálogo Inicio

Configuración y linker

@config describe el formato de salida. @linker describe la entrada MIR.

Configuración

@config:
.sectiondef ".section"
.make section "data"
.make section "text"
.make section "bss"
.sectionend ":"
.entrysection "text"
.entrylabel "_start"
.comment ";"
.labelend ":"
.datasection "data"
.defaultsection "text"
.sectionflags "text" "rx"
.sectionalign "text" 4
.sectionvaddr "text" 4194304
.wordsize 32
.addresssize 32
.endianess "little"
.casesensitive true
.symbolprefix "_"
.localprefix "."
.undefinedsymbols "error"
.duplicateSymbols "error"
.strict true
.allowemptysections false
.bitorder "msb"
@configend

Las directivas obligatorias son:

Directiva Significado
.sectiondef Prefijo al renderizar una sección.
.make section Declara una sección válida; puede repetirse.
.sectionend Termina la cabecera renderizada.
.entrysection Sección de salida predeterminada.
.entrylabel Label de entrada.
.comment Marcador de comentarios renderizados.
.labelend Terminador de labels.
.datasection Sección de símbolos de datos.
.defaultsection Sección por defecto.
.wordsize Ancho de emmit, en bits.
.addresssize Ancho de direcciones, en bits.
.endianess "little" o "big".
.casesensitive Sensibilidad al resolver nombres de Rules MIR.
.symbolprefix Prefijo de símbolos renderizados.
.localprefix Prefijo de símbolos locales.
.undefinedsymbols error, warn o ignore.
.duplicateSymbols error, warn o ignore.
.strict Política estricta del target.
.allowemptysections Permite renderizar secciones vacías.

También existen .sectionflags, .sectionalign, .sectionvaddr y .bitorder. .sectionalign controla la alineación física y virtual automática en bytes; .sectionvaddr asigna una base virtual explícita a una sección. .bitorder acepta "msb" o "lsb".

Linker

@linker:
.ext ".asm"
.name "main"
.searching ""
@linkerend

.ext es la extensión permitida para el MIR. .name identifica el nombre principal. .searching puede ser "" para buscar junto al archivo, una carpeta relativa o false para desactivar la búsqueda automática.

La API de compilación valida la extensión del MIR antes de procesarlo.