LibMPU — это эмулятор процессора, обеспечивающий выполнение арифметических, логических операций, операций сдвига для целых чисел, а также основных тригонометрических функций для вещественных и комплексных чисел с разрядностью до 65536 бит и 16384 бит соответственно. Числа хранятся в виде массивов байтов и поддерживают различные форматы (целые, вещественные, комплексные), а также знаковые и беззнаковые представления. Для целых чисел поддерживаются размеры от 8 до 65536 бит, а для вещественных — до 65536 бит, также предусмотрены специальные значения для бесконечностей, неопределенности и NaN. Комплексные числа хранятся как структуры из двух вещественных чисел.
Библиотека использует флаги для отображения результатов операций, которые размещаются в 32-битной переменной. Отдельные биты выделены для флагов целочисленных операций (A, C, O, S, P, Z, R, V) и вещественных операций (DOM, SNG, OVF, UDF, TLS, PLS, IND, INX). Помимо флагов, libMPU поддерживает стандартную переменную errno, а также собственные переменные ошибок для целых, вещественных, комплексных чисел и математических функций, позволяя переопределить обработку ошибок.
Основные арифметические операции, такие как сложение и вычитание целых чисел, представлены функциями `iadd`, `isub`, `iadc` и `isbb`, с учетом флага переноса. Также реализованы операции сдвига: логические (`ishl`, `ishr`), арифметические (`isal`, `isar`) и циклические (`irol`, `iror`, `ircl`, `ircr`). Циклические сдвиги влияют на флаги четности (P), знака (S) и нуля (Z). Умножение и деление целых чисел, а также прочие операции доступны, но не используют методы FFT или Карацубы.
Изображение носит иллюстративный характер
Библиотека использует флаги для отображения результатов операций, которые размещаются в 32-битной переменной. Отдельные биты выделены для флагов целочисленных операций (A, C, O, S, P, Z, R, V) и вещественных операций (DOM, SNG, OVF, UDF, TLS, PLS, IND, INX). Помимо флагов, libMPU поддерживает стандартную переменную errno, а также собственные переменные ошибок для целых, вещественных, комплексных чисел и математических функций, позволяя переопределить обработку ошибок.
Основные арифметические операции, такие как сложение и вычитание целых чисел, представлены функциями `iadd`, `isub`, `iadc` и `isbb`, с учетом флага переноса. Также реализованы операции сдвига: логические (`ishl`, `ishr`), арифметические (`isal`, `isar`) и циклические (`irol`, `iror`, `ircl`, `ircr`). Циклические сдвиги влияют на флаги четности (P), знака (S) и нуля (Z). Умножение и деление целых чисел, а также прочие операции доступны, но не используют методы FFT или Карацубы.