рефакторинг общих данных

This commit is contained in:
mzhoot 2026-05-23 20:30:15 +03:00
parent 84646f02c6
commit 171cb1af10
2 changed files with 40 additions and 28 deletions

View file

@ -331,6 +331,45 @@ VARIABLE_SIZE_INSTRUCTIONS = {
"переместить_со_знаком", # зависит от размера регистра
}
# === ИНСТРУКЦИИ, ВСЕГДА ТРЕБУЮЩИЕ ЗАГЛУШКУ НА ПЕРВОМ ПРОХОДЕ ===
# Эти инструкции содержат целевые метки в операндах, которые могут быть
# определены позже (в том числе в других секциях)
ALWAYS_STUB_INSTRUCTIONS = {
# Безусловные переходы
"переход",
"короткий_переход",
# Вызовы
"вызвать",
# Циклы
"цикл",
# Длинные условные переходы (32-битное смещение)
"переход_если_равно",
"переход_если_неравно",
"переход_если_меньше",
"переход_если_больше",
"переход_если_меньше_или_равно",
"переход_если_больше_или_равно",
"переход_если_перенос",
"переход_если_нет_переноса",
"переход_если_ноль",
"переход_если_неоль",
# Короткие условные переходы (8-битное смещение)
"короткий_переход_если_равно",
"короткий_переход_если_неравно",
"короткий_переход_если_меньше",
"короткий_переход_если_больше",
"короткий_переход_если_меньше_или_равно",
"короткий_переход_если_больше_или_равно",
"короткий_переход_если_перенос",
"короткий_переход_если_нет_переноса",
"короткий_переход_если_ноль",
"короткий_переход_если_неоль",
}
# === ВСПОМОГАТЕЛЬНЫЕ ФУНКЦИИ ===

View file

@ -15,7 +15,7 @@ import sys
import csv
sys.path.insert(0, '.')
from kvs_data import PAGE_SIZE, text_vaddr_base, align_up
from kvs_data import PAGE_SIZE,ALWAYS_STUB_INSTRUCTIONS, text_vaddr_base, align_up
from kvs_encoder import encode_instruction
# ========== ГЛОБАЛЬНОЕ СОСТОЯНИЕ ==========
@ -44,33 +44,6 @@ data_pos = 0
entry_point = "_start"
relocations = []
# Список инструкций, которые всегда должны получать заглушки в первом проходе
ALWAYS_STUB_INSTRUCTIONS = {
"переход",
"короткий_переход",
"вызвать",
"цикл",
"переход_если_равно",
"переход_если_неравно",
"переход_если_меньше",
"переход_если_больше",
"переход_если_меньше_или_равно",
"переход_если_больше_или_равно",
"переход_если_перенос",
"переход_если_нет_переноса",
"переход_если_ноль",
"переход_если_неоль",
"короткий_переход_если_равно",
"короткий_переход_если_неравно",
"короткий_переход_если_меньше",
"короткий_переход_если_больше",
"короткий_переход_если_меньше_или_равно",
"короткий_переход_если_больше_или_равно",
"короткий_переход_если_перенос",
"короткий_переход_если_нет_переноса",
"короткий_переход_если_ноль",
"короткий_переход_если_неоль",
}
def reset_state():