aboutsummaryrefslogtreecommitdiff
path: root/docs/appendices/knowledge-boundaries.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/appendices/knowledge-boundaries.md')
-rw-r--r--docs/appendices/knowledge-boundaries.md15
1 files changed, 10 insertions, 5 deletions
diff --git a/docs/appendices/knowledge-boundaries.md b/docs/appendices/knowledge-boundaries.md
index 29c9480..ee40121 100644
--- a/docs/appendices/knowledge-boundaries.md
+++ b/docs/appendices/knowledge-boundaries.md
@@ -141,11 +141,16 @@ Rust.
продолжает работу. Rust моделирует числовую запись, а не это UI-предупреждение;
на первом `FISTP qword` он явно завершает загрузку ошибкой для NaN, infinity и
значений вне signed-qword диапазона. В первом событии `Init` Rust поддерживает
-только action-форму `Handler(19)` (`control word` и `result reference` равны
-`0xffffffff`). Неизвестная инструкция даёт `Unsupported` в preview, не применяя
-накопленные частичные записи; при полной загрузке это ошибка. Это ограничение
-Rust исполнителя, не правило оригинального dispatcher-а. Ошибочные ссылки и
-типы остаются ошибками в обоих режимах.
+только action-форму `Handler(19)`: в семи disk header words control находится в
+`header_words[3]`, а result-save reference — в `header_words[1]`; для поддержанной
+формы оба равны `0xffffffff`. Это подтверждается перестановкой записи в
+`ai.dll!FUN_10011b20` (RVA `0x11b20`) и чтениями в исполнителе
+`FUN_10012020` (RVA `0x12020`) той же GOG-сборки. `Handler(19)` (`FUN_1000aa38`,
+RVA `0xaa38`) использует references `0..2`; `header_words[2]` его result-save
+guard-ом не проверяется. Неизвестная инструкция даёт `Unsupported` в preview,
+не применяя накопленные частичные записи; при полной загрузке это ошибка. Это
+ограничение Rust исполнителя, не правило оригинального dispatcher-а. Ошибочные
+ссылки и типы остаются ошибками в обоих режимах.
Для GOG-сборки также найден статический host call path в `Init`. В
`iron3d.dll!FUN_1005ff40` (RVA `0x5ff40`) одна ветвь сначала проходит записи