Size: a a a

Ассемблер

2020 September 04

TT

TONYMIN TGD in Ассемблер
Почему простого инвентирования MSB(и мб прибавления единицы, если MSB был ненулевым) недостаточно для смены знака?
источник

ВХ

Віталій Халак... in Ассемблер
попробуй ноль инвертнуть
источник

A

Aleksandr in Ассемблер
TONYMIN TGD
Почему простого инвентирования MSB(и мб прибавления единицы, если MSB был ненулевым) недостаточно для смены знака?
достаточно для смены знака, но число будет другим
источник

A

Aleksandr in Ассемблер
потому что так оно кодируется
источник
2020 September 05

ST

Saenro T in Ассемблер
Vlad
А это правда что в x86 64-bit ret эквивалентно pop rip ?
Если в 64bit написать код:
mov al, [rip]
nop
То в al запишется 90h — следующий байт за командой, т.к. rip в то время будет указывать на nop.
При этом, как таковой команды mov al, [rip] не будет, но произойдёт подмена "rip" адресом в памяти следующим за этой командой, т.е. получится mov al, [n], где n — следующий адрес.
В 16/32 это не работает (mov al, [rip]).
А зачем это в 64 — без понятия. (Хотя, это будет короче чем call n в котором pop r, к примеру.)
На счёт pop rip — это скорее чья-то шутка.
источник

楽園松本 in Ассемблер
TONYMIN TGD
Почему простого инвентирования MSB(и мб прибавления единицы, если MSB был ненулевым) недостаточно для смены знака?
Это вопрос очень сложный. Простой ответ на него такой: при  таком представлении отрицательных чисел они ведут себя "правильно" при любых арифметических операциях -- независимо, представляешь ты их как отрицательные или как положительные без знака; они позволяют заменить операции вычитания операцией сложения тд и тп. Короче говоря, происходит чёрная магия двоичной арифметики. Гениальное решение.
источник

ST

Saenro T in Ассемблер
Кто-то может отладить в x64dbg этот код? (Тот случай когда команда lea действительно нужна.)
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Saenro T
Кто-то может отладить в x64dbg этот код? (Тот случай когда команда lea действительно нужна.)
а что хотел сделать?
источник

ST

Saenro T in Ассемблер
Эквивалентны ли эти два метода?
источник

A

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

ST

Saenro T in Ассемблер
Это понятно, но заполнится ли от call весь регистр rbx?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Saenro T
Это понятно, но заполнится ли от call весь регистр rbx?
конечно
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
адреса то 64битные
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
и стек при push/pop оперирует 8мью байтами, как и call/ret
источник

ST

Saenro T in Ассемблер
Ок, x64dbg ругается на неверный формат PE?
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Saenro T
Ок, x64dbg ругается на неверный формат PE?
попробуй .end start поместить на последней строке исзодника ( после определения ланных), в этом макросе также содержится определение секции импорта, поэтому надо всегда в конце
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Aiwan ╭∩╮ (òÓ,) ╭∩╮
попробуй .end start поместить на последней строке исзодника ( после определения ланных), в этом макросе также содержится определение секции импорта, поэтому надо всегда в конце
хотя вроде разницы нет
источник

ST

Saenro T in Ассемблер
Экзешник же работает
источник

A

Aiwan ╭∩╮ (òÓ,) ╭∩╮... in Ассемблер
Saenro T
Экзешник же работает
как узнал, если отладчик его не щапускает? мож там винда его экстренно щакрывает
источник

ST

Saenro T in Ассемблер
Но да, выкинул .data — x64dbg съел
источник