summaryrefslogtreecommitdiff
path: root/doc/src/libmcpu-isa-coverage-ru.tex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/src/libmcpu-isa-coverage-ru.tex')
-rw-r--r--doc/src/libmcpu-isa-coverage-ru.tex66
1 files changed, 66 insertions, 0 deletions
diff --git a/doc/src/libmcpu-isa-coverage-ru.tex b/doc/src/libmcpu-isa-coverage-ru.tex
new file mode 100644
index 0000000..0851aea
--- /dev/null
+++ b/doc/src/libmcpu-isa-coverage-ru.tex
@@ -0,0 +1,66 @@
+\section{Актуальное покрытие LibMPU и семейства ISA}
+Вычислительное ядро ISA не является минимальным proof-of-concept. Оно содержит полноценные integer, Real и Complex families, а также отдельные группы управления потоком, стеком, указателями и runtime boundary. Этот раздел фиксирует именно архитектурную группировку; точные значения всех OPCODE16 приведены в приложении B и генерируются из public \code{cpu_opcode} в \code{include/libmcpu.h}.
+
+\subsection{System и data-movement family}
+Системная группа содержит \code{NOP}, \code{HALT}, lifecycle instruction \code{END}, graceful \code{EXIT}, zero-operand \code{SYSCALL} и отдельную PSW/status subgroup: \code{SETF}, \code{CLRF}, \code{CLRCPUF}, \code{CLRMPUF}. Data-movement/address family содержит \code{MOV}, \code{CLR}, \code{SWAP}, raw-byte \code{BSWAP}, immediate forms \code{LDI/LDR/LDC}, direct DATA access \code{LOAD/STORE}, pointer construction/dereference \code{LEA/LEASP/LOADP/STOREP}, pointer arithmetic \code{PADD/PADDI/PSUB/PSUBI/PDIFF} и block move \code{BMOV/BMOVI}.
+
+\begin{normative}
+\textbf{Тип operands задаёт opcode.} REG24 не содержит integer/Real/Complex tag. Поэтому один и тот же physical register может последовательно участвовать в разных domains, но assembler проверяет semantic view там, где signature требует \code{c<bits>} либо конкретный \code{r64} carrier. Executor независимо повторяет width/signature validation и не доверяет исходному тексту assembler.
+\end{normative}
+
+\subsection{Integer family}
+Integer operations работают с physical widths от 8 до 65536 bits. Базовые arithmetic/logical operations включают \code{IADD/IADC/ISUB/ISBB}, \code{IAND/IOR/IXOR/INOT}, \code{INEG}, compare/test, increment/decrement и exchange. Shift/rotate представлены как single-bit forms и variants с count в \code{r64}: logical/arithmetic shifts, ordinary rotates и rotates through carry.
+
+Width-changing operations намеренно разделены на unsigned copy \code{ICPY} и signed conversion \code{ICVT}. Full multiply возвращает product расширенной ширины через \code{IMUL/ISMUL}; division имеет отдельные unsigned/signed четырехоперандные формы \code{IDIV/ISDIV} с quotient и remainder. \code{IBITSLEN} выдаёт длину integer в bits в \code{r64}.
+
+Модульная арифметика LibMPU (например modular multiply/power и GCD-related higher-level routines) намеренно не превращена в CPU opcodes. Она остаётся library-level functionality: ISA предоставляет primitives, а не дублирует всю API-поверхность LibMPU.
+
+\subsection{Real family}
+Real arithmetic работает непосредственно с LibMPU objects требуемой physical precision. Простые operations (copy, conversion, add/sub/mul/div, sign/abs, decomposition, predicates) поддерживают архитектурно допустимые Real widths. Transcendental family ограничена тем же верхним пределом, что и настроенная LibMPU math backend; в проверенной конфигурации проекта это real16384.
+
+В ISA присутствуют:
+\begin{itemize}
+\item arithmetic и square root;
+\item trigonometric/inverse trigonometric functions;
+\item logarithms, exponentials, hyperbolic и inverse hyperbolic functions;
+\item \code{pow}, \code{hypot}, \code{atan2};
+\item \code{floor/ceil/round}, \code{frexp/ldexp/logb/modf/remainder};
+\item signed/unsigned integer-to-Real и Real-to-integer conversions;
+\item classification/predicate family для sign, IND, NaN classes, infinity и signed zero;
+\item \code{RCONST}, создающий predefined values непосредственно в precision destination.
+\end{itemize}
+
+\begin{principle}
+Широкий Real register не проходит через host \code{double}. Там, где instruction содержит immediate, exactness проверяется assembler-ом до emission; для произвольной высокой точности значение хранится как target Real object в data-like section и загружается byte-preserving instruction \code{LOAD/LOADP}.
+\end{principle}
+
+\subsection{Complex family}
+Complex register view имеет полный physical width от c64 до c65536, а каждая компонента занимает половину. Arithmetic \code{CADD/CSUB/CMUL/CDIV} использует LibMPU complex primitives. Math family содержит \code{CEXP/CSIN/CCOS/CSINH/CCOSH/CLOG/CSQRT/CPOW}; для функций, требующих math backend, предел component precision соответствует Real math limit (то есть c32768 при real16384 components).
+
+Отдельно представлены extraction/construction/conversion operations: \code{CREAL/CIMAG}, \code{CRTOC}, \code{CGEN}, \code{CPOLAR}, conjugation, absolute value/norm/argument, equality predicates и copy/precision conversion. Для mixed-domain signatures Real component register обязан иметь ровно половинную physical width соответствующего Complex object.
+
+\subsection{Control-flow и stack family}
+Прямые targets представлены CODE64; indirect targets - PROGRAM PTR64 в \code{r64}. Branch family состоит из \code{JMP}, \code{JSET/JCLR}, \code{JMPP}; call family - \code{CALL}, \code{CALLP}, \code{RET}. Условия \code{JZ/JNZ/JC/JNC/...} являются assembler aliases над PSW bits, а не отдельными opcodes.
+
+Stack family содержит object push/pop, SP-relative и FP-relative load/store, signed \code{ADJSP}, canonical frame operations \code{PUSHFP/SETFP/RESTSP/POPFP}, \code{LEAFP} и validated \code{SETSP}. Эти instructions работают с raw STACK offsets/PTR64 и не вводят скрытого frame metadata в CPU.
+
+
+\subsection{Явное управление arithmetic/status flags}
+PSW разделён на два writable byte domains: CPU flags \code{PSW[7:0]} и MPU flags \code{PSW[15:8]}. Инструкции \code{SETF flag} и \code{CLRF flag} изменяют ровно один именованный bit из диапазона AF..INXF и сохраняют все остальные bits PSW. \code{CLRCPUF} очищает только \code{PSW[7:0]}, а \code{CLRMPUF} --- только \code{PSW[15:8]}.
+
+\begin{normative}
+HF, TF, IF и многобитовое поле MODE не принадлежат writable arithmetic/status domain. \code{SETF/CLRF} обязаны отвергать selectors HF/TF/IF; bulk-clear instructions также не изменяют PSW bits 16 и выше. \code{JSET/JCLR} при этом сохраняют более широкий read-only selector contract и могут проверять HF/TF/IF.
+\end{normative}
+
+Явная установка CF предназначена, в частности, для подготовки входного carry/borrow state перед \code{IADC/ISBB} и rotate-through-carry family. Сами integer instructions сохраняют установленную LibMPU semantics; новые flag instructions только дают assembler-программе прямой способ подготовить их входное состояние.
+
+\subsection{PSW-neutral conversion class}
+Conversion-class instructions сохраняют incoming \code{PSW[15:0]}, даже если внутренний LibMPU helper меняет library flags. К этой категории относятся непосредственные numeric loads и width/domain conversions, в частности \code{LDI}, \code{LDR}, \code{LDC}, \code{ICVT}, \code{RCVT}, \code{ITOR}, \code{UITOR}, \code{RTOI}, \code{RTOUI}, \code{CCVT}, \code{CRTOC}. Arithmetic instructions, напротив, публикуют обычные LibMPU status effects.
+
+Это различие важно для compiler backend: преобразование representation не должно разрушать condition state предыдущего сравнения, тогда как arithmetic operation по определению может менять flags.
+
+\subsection{Неинструкционные функции}
+Text parsing/formatting, format introspection, diagnostics и library context management не являются CPU operations. Они принадлежат assembler, LibMPUIO, будущей guest library либо host runtime. Такая граница сохраняет ISA вычислительной и не привязывает bytecode к host textual API.
+
+\subsection{Regression contract}
+Нормативное поведение instruction family проверяется не только unit tests decoder-а. Regression suite сравнивает CPU execution с соответствующими LibMPU primitives, проверяет malformed widths/operands, exact-immediate diagnostics, PSW preservation для conversions, pointer/stack faults и no-partial-write invariants. Отдельный пакет model examples дополнительно проверяет композицию ISA + CALL ABI + MELF + loader на длинном execution path.