· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.ASSEMBLER —› определение EIP

Посл.отвђт Сообщенiе


Дата: Мар 8, 2004 00:22:18

вопрос конечно FAQовый но все же
как определить EIP если код не имеет определенного смещения? он может быть по адресу 0хffff8000 например или
по 0хa5304000 или еще где то. так что
call 0f
0:
popl %eax
не проходит ибо адрес метки неизвестен


Дата: Мар 8, 2004 00:37:52

да забыл сказать - код которому нужен eip умещается в одну страницу но страница эта очень юзаемая т к отлавливает все прерывания - то есть фактически это микроядро которое по некоторым причинам нильзя фиксировать по какому то адресу. более того его и копировать нельзя то есть копия ядра она одна единственная. и может одновременно юзаться несколькими процами по разным адресам. есть вариант зранить таки адрес страницы в ней самой в виде таблицы для каждого проца по одной записи но тогда надо APIC размечать в память ибо как определить номер проца.


Дата: Мар 8, 2004 00:41:15 · Поправил: Johnikum

      db  E8,00,00,00,00   ;call met
met:  pop eax              ;разрывать кодом не надо


eax - будет содержать адрес кода pop eax


Дата: Мар 8, 2004 01:25:47 · Поправил: Narkomanius

это как получается - immediate рассматривается процом как относительный адрес?

оказывается да. мля


Дата: Мар 8, 2004 06:53:53 · Поправил: Asterix

Я не совсем понял смысл этой темы, какой такой код не имеет определённого смещения, но можно
ещё так:
call $+5
pop eax


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.078