Size: a a a

Ассемблер

2020 July 30

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Saenro T
Или так (влево и вправо):

mov si, text
cld
call $+3
mov di, si
mov cx, length-1
lodsb
rep stosb
stosb
std
dec si
ret
а зачем call $+3?
источник

A

Aleksandr in Ассемблер
чтобы повторить после std, то есть в другую сторону
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Saenro T
Или так (влево и вправо):

mov si, text
cld
call $+3
mov di, si
mov cx, length-1
lodsb
rep stosb
stosb
std
dec si
ret
так mov di, si не сработает, ты +3 это обходишь (с условием что это мов занимает 3 байта)
источник

ST

Saenro T in Ассемблер
call 3 байта
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Saenro T
call 3 байта
ip это адрес следующей инструкции, следующая mov di, si. делая +3 эту инструкцию ты обходишь
источник

ST

Saenro T in Ассемблер
Сюрприз: mov di, si — два байта
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮
так mov di, si не сработает, ты +3 это обходишь (с условием что это мов занимает 3 байта)
я об этом и говорю
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
короч без отладки - не вижу
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Saenro T
call 3 байта
чуть уже догоняю
источник

ST

Saenro T in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮
чуть уже догоняю
Лишь бы там было E8,00,00 (call IP — следующий за call), но $ — это IP самого call, поэтому $+3 как бы минус длина команды и плюс три.
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Saenro T
Лишь бы там было E8,00,00 (call IP — следующий за call), но $ — это IP самого call, поэтому $+3 как бы минус длина команды и плюс три.
эт я понял
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Saenro T
Или так (влево и вправо):

mov si, text
cld
call $+3
mov di, si
mov cx, length-1
lodsb
rep stosb
stosb
std
dec si
ret
интересно, си данную оптимизацию применяет?
источник

ST

Saenro T in Ассемблер
Если call такой: 66,E8,00,00,00,00
То $ вернётся на 6 байт
источник

ST

Saenro T in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮
интересно, си данную оптимизацию применяет?
Проверь
источник

ST

Saenro T in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮
интересно, си данную оптимизацию применяет?
Но осмелюсь предположить, что нет.
источник

ST

Saenro T in Ассемблер
Ну а что, попробуйте заставить С/С++/С# думать как вы хотите, а потом, в отладчике посмотрите что выйдет.
источник

ST

Saenro T in Ассемблер
Крутаните символы в строке "NEVER" на один символ влево/вправо алгоритмом близким к вышеописанному.
источник

ST

Saenro T in Ассемблер
Бред конечно...)
источник

ST

Saenro T in Ассемблер
Но можно поступить проще
источник

ST

Saenro T in Ассемблер
Попытаться найти в большом изобилии сишных программ следующий машинный код: E8,00,00 или E8,00,00,00,00
источник