diff options
Diffstat (limited to 'doc/src/libmcpu-assembler-directives-table.tex')
| -rw-r--r-- | doc/src/libmcpu-assembler-directives-table.tex | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/doc/src/libmcpu-assembler-directives-table.tex b/doc/src/libmcpu-assembler-directives-table.tex new file mode 100644 index 0000000..e7200b9 --- /dev/null +++ b/doc/src/libmcpu-assembler-directives-table.tex @@ -0,0 +1,37 @@ +\begin{longtable}{@{}L{35mm}L{48mm}L{76mm}@{}} +\toprule +\textbf{Директива} & \textbf{Форма} & \textbf{Назначение}\\ +\midrule +\endfirsthead +\toprule +\textbf{Директива} & \textbf{Форма} & \textbf{Назначение}\\ +\midrule +\endhead +\code{.init} & без аргументов & Переключает текущую code section на INIT. Для final low-level ET_EXEC здесь определяется \code{_start}; ET_DYN такую секцию иметь не может.\\ +\code{.text} & без аргументов & Основная PROGRAM code section. Здесь находится \code{_life}, а PROGRAM без отдельного INIT имеет \code{_start == _life}.\\ +\code{.fini} & без аргументов & FINI code section; low-level entry symbol --- \code{_fini}. HLL finalization создаётся CRT автоматически.\\ +\code{.data} & без аргументов & Инициализированные writable DATA objects.\\ +\code{.bss} & без аргументов & Zero-initialized DATA, сериализуется как NOBITS.\\ +\code{.control} & без аргументов & Model CONTROL space contribution; guest read-only во время исполнения. Только main ET_EXEC.\\ +\code{.input} & без аргументов & Model INPUT space contribution. Только main ET_EXEC.\\ +\code{.output} & без аргументов & Model OUTPUT space contribution. Только main ET_EXEC.\\ +\code{.trace} & без аргументов & Model TRACE space contribution. Только main ET_EXEC.\\ +\code{.align} & \code{.align N} & Выравнивает следующую позицию текущей section до степени/границы, проверяемой assembler-ом; добавляет padding либо увеличивает BSS size.\\ +\code{.zero} & \code{.zero N} & Резервирует N нулевых байтов; особенно естественна в \code{.bss}.\\ +\code{.byte} & \code{.byte expr[, ...]} & Записывает raw bytes 0..255 без terminator, alignment и endian conversion.\\ +\code{.integer}, \code{.int} & \code{.int bits, expr[, ...]} & Создаёт целые target objects заданной ширины. \code{.int} --- полный синоним \code{.integer}.\\ +\code{.real} & \code{.real bits, value} & Создаёт target Real object указанной physical width через LibMPU representation.\\ +\code{.complex} & \code{.complex bits, real, imag} & Создаёт target Complex object; \code{bits} задаёт physical width всего Complex object.\\ +\code{.utf8} & \code{.utf8 "text"} & Записывает проверенную UTF-8 NUL-terminated byte string. Embedded NUL не допускается.\\ +\code{.ucs2} & \code{.ucs2 "text"} & Преобразует UTF-8 source literal в strict UCS-2 target code units и добавляет U+0000. Surrogate range и scalar values выше U+FFFF запрещены.\\ +\code{.cptr}, \code{.codeptr} & \code{.cptr code-expr} & Создаёт PROGRAM/CODE pointer object с relocation при необходимости. \code{.codeptr} --- синоним.\\ +\code{.ptr} & \code{.ptr pointer-expr} & Создаёт полный PTR64 на допустимый target segment/label с relocation при необходимости.\\ +\code{.equ} & \code{.equ name, expr} & Определяет absolute assembler symbol, не создающий bytes. Допускает forward references между \code{.equ}; section labels в таком выражении не используются.\\ +\code{.global}, \code{.globl} & \code{.global name} & Делает symbol GLOBAL. \code{.globl} --- синоним.\\ +\code{.extern} & \code{.extern name} & Объявляет внешний undefined symbol для последующей компоновки.\\ +\code{.weak} & \code{.weak name} & Объявляет/помечает symbol как WEAK согласно MELF symbol binding.\\ +\bottomrule +\end{longtable} + +\paragraph{Особые синтаксические формы.} +\code{_start_life:} --- assembler pseudo-label, эквивалентный последовательным \code{_start:} и \code{_life:} по одному адресу в \code{.text}. Он не является директивой и не создаёт отдельный MELF symbol \code{_start_life}. Preprocessor line markers \code{\# N "file" flags...} меняют только logical coordinates diagnostics; \code{\#pragma} и \code{\#lang} игнорируются assembler-ом как строки, принадлежащие другим стадиям toolchain. |
