Как выгоднее всего получать в 8-ми и 16-ти битных регистрах значения массива(смещение 8 бит)?
Вид для печати
Как выгоднее всего получать в 8-ми и 16-ти битных регистрах значения массива(смещение 8 бит)?
разместить массив по адресу #xx00
для 8-битных данных:Для 16-битных будет 2 таких массива один за другим, в одном - младший байт, в другом - старшийКод:LD H,xx
LD L,index
LD A,(HL)
Код:LD H,xx
LD L,index
LD E,(HL)
INC H
LD D,(HL)
---------- Post added at 21:51 ---------- Previous post was at 21:50 ----------
Опередил...
А ежели массивов много, но по несколько элементов, и памяти на кратное 256 расположение не напасёшься?
Я сейчас делаю так(для 16-бит - inc ix или +1 для второй половинки регистра назначения):
Можно ли как-то ещё более удобно?Код:macro ld_ixa_r label,r
ld ixh,label/256+1*((label%256)/128)
ld ixl,a
ld r,(ix+label%256-256*((label%256)/128))
endm
В твоём варианте 63, в моём для 16-бит - 57 тактов =)
И 12 против 11 байт соответственно.
Ладно, спасибо, видать мой вариант не самый плохой, да и одним регистром меньше задействуется.
NovaStorm, а со стэком не пробовал? популярный EI вариант.
Не пробовал, но так ли сильно он будет отличаться от этих? Да и загружать/восстанавливать SP тоже придётся.