jmp FWORD PTR [eax-0x67]?

assembly x86

1957 просмотра

2 ответа

699 Репутация автора

Тип данных FWORD определяется как 6 байтов, так как он транслируется в 32-битный виртуальный адрес в инструкции jmp:

    jmp FWORD PTR [eax-0x67]

? ...

Автор: Bhubhu Hbuhdbus Источник Размещён: 14.09.2012 09:01

Ответы (2)


5 плюса

71948 Репутация автора

Решение

Когда вы переходите к FWORD PTR, вы делаете «дальний переход», то есть указанная память содержит 16-битный «селектор» (который относится к записи сегмента в GDT или LDT ) и 32-битное смещение от начала сегмента, к которому относится селектор. Дескриптор сегмента содержит данные о сегменте, конечно ... включая, где в памяти он начинается.

Во время перехода ЦП выполняет некоторые проверки привилегий, чтобы убедиться, что селектор действителен и разрешен (существуют уровни привилегий и типы сегментов и тому подобное), затем он эффективно загружает первые 16 бит в CS, а остальные в EIP. С этого момента кодовые адреса фактически добавляют к ним базовый адрес сегмента CS, чтобы превратить их в виртуальные адреса.

Автор: cHao Размещён: 14.09.2012 09:17

3 плюса

9143 Репутация автора

В дальнем переходе используется полная база сегмента: значение смещения в качестве абсолютного адреса, поэтому он состоит из 16-битного сегмента и 32-битного адреса. Он выполняет переход к инструкции, расположенной в другом сегменте, чем текущий сегмент кода, но он должен быть на том же уровне привилегий.

Автор: GJ. Размещён: 14.09.2012 09:22
Вопросы из категории :
32x32