EnotVM

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » EnotVM » EnotVM » GenD7. Генератор асемблерного коду (FASM) для EnotVM32


GenD7. Генератор асемблерного коду (FASM) для EnotVM32

Сообщений 1 страница 3 из 3

1

GenD7.  Генератор асемблерного коду (FASM) для EnotVM32

GeneratorD7.7z - http://forumstatic.ru/files/001c/77/27/30649.7z

GeneratorD7 (GEN00)_AI.txt - https://forumstatic.ru/files/001c/77/27/85215.txt

ДЕЩО  КОРИСНЕ З ПОПЕРЕДНІХ ТЕМ

EnotVM32,  Turbo Pascal 4.0, Version=1

ЗАВАНТАЖИТИ "EnotVM32 TP4 Ver=1.7z" -
http://forumstatic.ru/files/001c/77/27/53871.7z

fasm17335.7z - http://forumstatic.ru/files/001c/77/27/72607.7z
fasmw17335.7z - http://forumstatic.ru/files/001c/77/27/91859.7z

ДЛЯ РОЗМОВИ ЗІ ШТУЧНИМИ ІНТЕЛЕКТАМИ:

Документація та інформація по "EnotVM32"
(EnotVM32, Turbo Pascal 4.0, Version=1)

Source chat deepseek com.txt:
Вихідний код оброблений https://chat.deepseek.com/
https://forumstatic.ru/files/001c/77/27/40408.txt

chat qwen ai.txt:
Вихідний код оброблений https://chat.qwen.ai
https://forumstatic.ru/files/001c/77/27/57901.txt

Документація та опис від автору EnotVM32.txt:
https://forumstatic.ru/files/001c/77/27/88334.txt

Документація користувача EnotVM32 (від chat.deepseek.com).txt:
https://forumstatic.ru/files/001c/77/27/90936.txt

Детальна документація користувача та розробника EnotVM32 (chat.qwen.ai).txt:
https://forumstatic.ru/files/001c/77/27/58842.txt

Приклади для EnotVM32 на FASM.
Macros.asm.Файл макросів для EnotVM32
https://forumstatic.ru/files/001c/77/27/81269.txt

"Приклади для EnotVM32 від deepseek com для FASM.txt"
https://forumstatic.ru/files/001c/77/27/16164.txt

Приклади для EnotVM32 від Автора EnotVM32 для FASM.txt
https://forumstatic.ru/files/001c/77/27/50605.txt

ВСІ ДОКУМЕНТАЦІЇ ЯКІ ВИЩЕ В ОДНОМУ ФАЙЛІ:
_ALL.txt https://forumstatic.ru/files/001c/77/27/69899.txt

0

2

2. Документація модуля `uGEN00_a` (генератор рівня 0)

Призначення
-----------
`uGEN00_a` – низькорівневий бінарний генератор для проєкту EnotVM32.
Він дозволяє побайтово формувати образ програми (`BOOT.bin`) безпосередньо
в пам’яті, контролюючи адресацію та уникаючи перезапису.

Усі байти зберігаються в масиві `RAM[0..RAMpastByte]`. Додатковий масив
`RAMcompile` позначає, які адреси вже були зайняті компіляцією – це
запобігає випадковому подвійному запису в ту саму комірку.

Основні процедури (API)
------------------------

| Процедура/Функція | Опис |
|-------------------|------|
| `INITCompiler` | Ініціалізує пам’ять, очищує прапори помилок. Обов’язково викликати першою. |
| `FINALCompiler: Boolean` | Завершує компіляцію, записує буфер у файл `BOOT.bin`. Повертає `True` при успіху. |
| `DB(e: Cardinal)` | Додає 1 байт. |
| `DW(e: Cardinal)` | Додає 2 байти (Word, little-endian). |
| `DD(e: Cardinal)` | Додає 4 байти (Cardinal, little-endian). |
| `DQ(e: Int64)` | Додає 8 байт (Int64, little-endian). |
| `FillChar(SizeData: Cardinal; e: Byte)` | Заповнює `SizeData` байт значенням `e`. |
| `DString255(const s: string255)` | Записує символи рядка (без нуль-термінатора) як послідовність байт. |
| `FillDB(var arr: array of Byte; BeginPos, SizeData: Cardinal)` | Копіює `SizeData` байт із масиву `arr`, починаючи з елемента `BeginPos` (1-базова індексація). |
| `SetAddrCompile(e: Cardinal)` | Встановлює поточну адресу компіляції в `e`. Наступний виклик `DB`/`DW`/… запише дані за цією адресою. |
| `GetAddrPosCompile: Longint` | Поточна позиція запису (остання зайнята адреса). |
| `GetAddrMaxPosCompile: Longint` | Максимальна адреса, яка була використана (для визначення довжини файлу). |
| `SetFileName(s: string255)` | Змінює ім’я вихідного файлу (за замовчуванням `BOOT.bin`). |
| `REM(s: string255)` | Запам’ятовує коментар (використовується у повідомленнях про помилки). |

Коди помилок
-------------
Якщо `FINALCompiler` повертає `False`, на консоль виводиться детальний звіт:

| CodeError | Повідомлення |
|-----------|--------------|
| 1 | Неприпустима адреса компіляції. |
| 2 | В адресу вже було компілювання. |
| 3 | Відсутня ініціалізація програми (не викликано `INITCompiler`). |
| 4 | Відсутність коду в програмі. |

Помилки супроводжуються номером команди, значенням,
адресою та останнім коментарем, що допомагає швидко знайти джерело проблеми.

Допоміжні функції для виводу в консоль
---------------------------------------
- `AnsiToOem(const s: string): string` – перекодовує рядок з Windows?1251 у OEM (CP866) для коректного відображення кирилиці у консолі.
- `WritelnOEM(s: string255)` – виводить рядок із автоматичним перекодуванням.

0

3

Модулі uGENXXz є експортом усіх процедур модулю XX, які можуть бути
використані користувачем, в інших модулях або ж у файлі .dpr.
Достатньо підключити один файл uGENXXz.pas, і усі доступні можливості
інших файлів модулю uGENXX будуть доступні.
Примітка. При використанні в файлах .dpr, він повинен підключатись останнім
uGEN00z in '_UNIT\uGEN00z.pas';
в файлах модулів .pas, він повинен підключатись єдиним.

Саме цей модуль uGEN00z.pas може підійти для використовувати
в генерації BIN-файлів, або чогось подібного.

Процедури, доступні в модулі uGEN00z.pas:

{Основні процедури для користувача}
{1} Procedure INITCompiler;
{2} Function  FINALCompiler: Boolean;
{3} Procedure DB(e: Cardinal);
{4} Procedure REM(s: string255);
{5} Procedure DW(e: Cardinal);
{6} Procedure SetAddrCompile(e: Cardinal);
{7} Procedure DD(e: Cardinal);
{8} Procedure DQ(e: Int64);
{9} Procedure FillChar(SizeData: Cardinal; e: Byte);
{10} Procedure SetFileName(s: string255);
{11} Procedure DString255(const s: string255);
{12} Function  GetAddrPosCompile: Longint;
{13} Procedure FillDB(var arr: array of Byte; BeginPos, SizeData: Cardinal);
{14} Function  GetAddrMaxPosCompile: Longint;

{Службові процедури та функції, які не впливають на компіляцію}
function  AnsiToOem(const s: string): string;
procedure WritelnOEM(s: string255);

0


Вы здесь » EnotVM » EnotVM » GenD7. Генератор асемблерного коду (FASM) для EnotVM32