Jmp на следующую инструкцию в debug

Тех.вопросы
Aug 2, 2019
Q

Открыл значит в отлядчике тестовый exe-шник, который генерит команда

cargo test

а там дохрена таких конструкций:

jmp short nxt
nxt:

или, что то же самое:

db 0xEB, 0x00

только чего-то не пойму, зачем это нужно, может кто знает?

K

А какой компилятор? Какой таргет? Как дезассемблировал? objdump -M intel -d target/debug/deps/?

Q

stable-x86_64-pc-windows-msvc
дизассемблировал x64dbg

I

cargo test генерит неоптимизированный код, это кстати видно в выводе команды:

Finished dev [unoptimized + debuginfo] target(s) in 1.85s

Попробуйте сделать:

cargo test --release
P

Скорее всего это для брейкпоинтов сделано.

Q

cargo test генерит неоптимизированный код, это кстати видно в выводе команды:

Ну это я знаю, в release версии такой фигни нет, поэтому в названии я написал debug.

Скорее всего это для брейкпоинтов сделано.

Для бряка нужен 1 байт, а тут целых 2, хотя может я чего-то не понимаю в этой жизни.

Q

Посмотрел на stable-x86_64-unknown-linux-gnu – точно такие же прыжки.

Q

Так это не rust генерит, а llvm.