Есть такой код:
если А потом не используется, могу ли я заменить наКод:ld a, r and 7 cp 3 jr c, monster_attack cp 5 jr nc, monster_attack
Код:ld a, r and 7 cp 6 jr c, monster_attack
Есть такой код:
если А потом не используется, могу ли я заменить наКод:ld a, r and 7 cp 3 jr c, monster_attack cp 5 jr nc, monster_attack
Код:ld a, r and 7 cp 6 jr c, monster_attack
Последний раз редактировалось Bedazzle; 24.08.2018 в 18:14.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
если нужно проверять 2-ой бит (считая от нуля) тогдаКод:ld a,r rra and 3 jr nz, monster_attack
Код:ld a,r rra rra and 1 jr nz, monster_attack
Последний раз редактировалось shurik-ua; 24.08.2018 в 18:21.
Если A потом не используется, можно сделать так. Но непонятно, что заставило авторов делать две проверки вместо одной. Возможно, А не используется в ветви перехода, но используется далее по коду? Возможно, в ветви перехода проверяется бит CF (или ZF)?
- - - Добавлено - - -
Переход на monster_attack делается по значениям 0,1,2,5,6,7 после AND 7, и не делается по значениям 3,4.
Или шесть из восьми?
Надо убедиться, что:
R - истинно случайное.
AF - не используется в обеих ветках.
Нет самомодифицирующегося кода. Например константы 7,3 и 5 не изменяются.
Тогда это 6 из 8. То же что 3 из 4.
LD A,R
AND 3; 5 или 6. два бита нам нужны.
JP NZ,m_a
- - - Добавлено - - -
А R нужно проверить, чтобы не писалось _до_, или читалось _до_ или _после_, за фиксированном количестве тактов.
Зачем нужен R? случайное число получится ахтунговое.
Если нужно фиксированное тактов, то задача непонятная - а в ветвлениях будет одно количество тактов?
для перехода удобнее построить таблицу:
dw bra1 ;0
dw bra1 ;1
dw bra1 ;2
dw bra2 ;3
dw bra1 ;4
dw bra2 ;5
dw bra1 ;6
dw bra2 ;7
и получить адрес старым индейским способом.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)