Выравнивание, утрамбовывание и впихивание кода + быстрые таблицы переходов и SJASM
ТО о чем так долго говорили большевики наконец свершилось! :v2_dizzy_roll:
при поддержке Ped7g™
мну наконец запилил размещатель\утрамбовщик быстрых таблиц переходов и не таблиц переходов
и теперь возможно? можно будет забыть про бхмерское слоупочное
Код:
ld l,a
ld h,tab_haddr
ld a,(hl)
inc h
ld h,(hl)
ld l,a
jp (hl)
и про всякие дырки в коде\данных после выравнивания
https://jpegshare.net/images/b5/b9/b...b9984d0e34.png
собственно сабж patent pending и находиться в аттаче :v2_dizzy_roll:
написан на редкостном *****коде :v2_dizzy_facepalm:
но на вид даже работает :v2_dizzy_tired2:
и засовывает код в первое попавшееся место
(каждый свободный байт предварительно помечается в массиве)
а не как было бы рациональнее
напиханы всякие детекции вылазения за пределы выделенного участка памяти
в случае заканчивания выделенной памяти
но 100% детекцию всех возможных вариантов вылазения не гарантирую
тк же не поддерживается много страничность !!!!!!!!1
хотя ее наверно? можно как то прилепить
как то прилеплена
результат работы
https://jpegshare.net/images/1b/ca/1...6ea24f45d6.png
jp-ы ведут куда надо
условная компиляция тоже работает
как поведут себя инклуды и макросы науке неизвестно
под таблицы генерируемые при помощи lua
нужно предварительно забивать место
таким образом
Код:
tampright_align256_allocate_macro_pg01
tab_1
tab_1_haddr = high $
dup 512
nop
edup
tab_2
tab_2_haddr = high $
dup 512
nop
edup
end_tampright_align256_allocate_macro_pg01
org tab_1
lua allpass
for temp_cnt = 0x00,0x1FFF,0x10 do
sj.add_byte(math.floor(temp_cnt % 256))
end
endlua
org tab_2
lua allpass
for temp_cnt = 0x00,0x1FFF,0x10 do
sj.add_byte(math.floor(temp_cnt / 256))
end
endlua
[свернуть]
все метки и переменные названы достаточно длинно и своеобразно
чтоб не конфликтовать с уже имеющимися в коде в который будут вставлены
- - - Добавлено - - -
собственно howto юзать быстрые таблицы
Код:
ld l,a ;4
ld h,$7F ;7
ld h,(hl) ;7
jp (hl) ;4
fasttab_allocate_macro $7F,0
ld b,0
jp ix
end_fasttab_allocate_macro
fasttab_allocate_macro $7F,1
ld b,1
jp ix
end_fasttab_allocate_macro
;итд
- - - Добавлено - - -
АХТУНХ то что названо "page"
есть нечто длинной 256 байт
и с начальным адресом кратным 256
которых у z80 целых 256 штук
и собственно непонятно
почему такого всегда нужного функционала
нет не в одном? компиляторе
Последняя версия (на 2020.09.19)
ADP r0023
http://www.mediafire.com/file/mxkvk5..._r0023.7z/file