как я понял первый байт этой команды EB, а вот второй от чего-то зависит, наверно от IP, но как? Понимаю, что это нафиг не надо, но любопытство - не порок.
А в мануальчик заглянуть не судьба или религия не позволяет ? В относительных (relative) jmp и call второй байт (или дворд) это +- смещение адреса, на который происходит переход, относительно адреса команды, следующей за jmp или call
Ну у EB - только байт (знаковое смещение относительно адреса байта следующего за командой, +127/-128 байт), а вот у E9 - уже word/dword. У EA даже больше. Там аж до 6 байт, правда это уже не относительный адрес, а абсолютный (сегмент:смещение)
Antolflash _ 4000C4 <--- адрес метки A1 4000D0 <---значение в регистре EIP на момент выполнения JMP -12 =0F4h<-- смещение Число 0F4h получает знаковое расширение и складывается со значением в регистре IP/EIP/RIP 0F4h-->FFFFFFF4h [EIP] = 004000D0 004000C4<--адрес, на который мы перейдем При сложении IP/EIP/RIP со смещением, перенос из старшего разряда IP/EIP игнорируется, поэтому адрес IP/EIP вычисляется по кольцевому принципу в пределах текущего сегмента кода, то есть: 0FFFFFFFFh+0FFFFFFFFh=0FFFFFFFEh