Операнд для ближнего прыжка

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by ShkiperLol, 7 Oct 2011.

  1. ShkiperLol

    ShkiperLol Banned

    Joined:
    17 Apr 2010
    Messages:
    182
    Likes Received:
    1
    Reputations:
    0
    Подскажите как вычеслять операнд для ближнего прыжка от текущего адреса к меньшему.
    Пример:
    [​IMG]

    По какой формуле получился операнд BC?

    Для ближнего прыжка от текущего адреса к большему формула простая:
    от адреса на который хотим прыгнуть отнимаем текущее значение eip,отнимаем 2 байта(размер короткого прыжка с операндом).Т.е для команды jmp прыгающей с адреса 0x400098 на адрес 0x4000a3 операнд будет 0x09,так как 0x4000a3-0x400098-2=0x09
     
  2. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    937
    Likes Received:
    162
    Reputations:
    27
    00400135 EB BC JMP SHORT 004000F3
    004000F3 - 00400135 = FFFFFFBE
    FFFFFFBE - 2 = FFFFFFBC
     
  3. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
    в jmp short однобайтовый операнд это смещение в пределах -128 до +127 байт
     
    #3 alexey-m, 7 Oct 2011
    Last edited: 7 Oct 2011