Насчет far call

Discussion in 'WASM.ASSEMBLER' started by devel, Mar 31, 2006.

  1. devel

    devel New Member

    Blog Posts:
    0
    Joined:
    Feb 27, 2006
    Messages:
    9
    Всем привет.

    У меня такой вопрос:

    При far call в 32 разрядном режиме на скока уменьшается esp?
     
  2. Quantum

    Quantum Паладин дзена

    Blog Posts:
    0
    Joined:
    Jan 6, 2003
    Messages:
    3,143
    Location:
    Ukraine
    На 4, т.к. режим 32 разрядный.
     
  3. devel

    devel New Member

    Blog Posts:
    0
    Joined:
    Feb 27, 2006
    Messages:
    9
    Ответ найден уменьшается на 8.

    не 4 т.к. вызов far(дальний)
     
  4. Quantum

    Quantum Паладин дзена

    Blog Posts:
    0
    Joined:
    Jan 6, 2003
    Messages:
    3,143
    Location:
    Ukraine
    Под far call подразумевалось intersegment call. На стек кладётся CS, кроме EIP. Поэтому 8. Правильно.
     
  5. bers

    bers New Member

    Blog Posts:
    0
    Joined:
    Sep 16, 2005
    Messages:
    139
    Location:
    Russia
    Ребят, а вам не кажется, что сегментный регистр CS занимает 2 байта? Следовательно - 2+4=6.
     
  6. Quantum

    Quantum Паладин дзена

    Blog Posts:
    0
    Joined:
    Jan 6, 2003
    Messages:
    3,143
    Location:
    Ukraine
    bers



    В защищённом режиме значение CS дополняется нулями до 32 бит и запихивается в стек перед EIP.
     
  7. NullSessi0n

    NullSessi0n New Member

    Blog Posts:
    0
    Joined:
    Jan 20, 2006
    Messages:
    322
    bers

    Если регистр 2 байтный, но используется внутри специфических команд (iret, far call, far jmp и т.д.), то всегда дополняется до 32 бит за счёт нулей. Делается это видно для кратности 4 esp и элементов в стеке. Так как это удобнее читается процессором, соответственно, быстрее.

    Нули дописаются слева, то есть cs - младшая часть двойного слова в стеке.
     
  8. bers

    bers New Member

    Blog Posts:
    0
    Joined:
    Sep 16, 2005
    Messages:
    139
    Location:
    Russia
    Понятно, учту на будущее.