· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ASSEMBLER —› P2 - P4 processor difference? or my mistake?

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


Дата: Июн 5, 2003 19:34:23

Иногда мне приходится писать position-independent code я поступаю следующим образом :
определяю где я нахожусь( EIP ) и потом заношу его в EBP, и делаю относительную адресацию через EBP.
определяю я EIP следующим образом:
push 0xc3
mov eax,esp
call eax
mov eax,[esp] ( смещение не помню сейчас )
но вот недавно я написал немного по-другому (чисто случайно )
push 0xc3
call esp
mov eax,[esp]

на моей машине (P4) все работает на ура.
но вот довелось запустить на тестовой машине (P2) - и там оно перестало работать.
я долго - долго думал и решил отдебажить. оказалось, что по call esp я перехожу не на RET ( 0xc3) а прехожу туда, где адрес возврата.

какие мнения у all есть на этот счет?.
кстати вопрос - кто какие методы определения EIP использует?


Дата: Июн 5, 2003 20:22:50

>кстати вопрос - кто какие методы определения EIP использует?

Вообще-то есть классическое:
call $+5
pop ebp


Дата: Июн 5, 2003 23:13:13 · Поправил: rst

мда.. интересный вариант. Жаль раньше не додумался.


Дата: Июн 7, 2003 21:34:08

разница в микрокоде
call поправляет esp а ты его юзаешь
а в курсе в какой последовательности вызываются микроинструкции?

mov eip->ss:[esp]
jmp reg

зависимость по данным = eip а на 4 пне
то же самое но зависимость по данным не только по eip а по esp
то есть на 2 пне пень следил чтоб не записали в еип чего лишнего

вообще пожумай какую баговую команду ты придумал call esp -обе микроинструкции зависят друг от друга по данным


Дата: Июн 8, 2003 09:20:41

Почему это баговую? очень даже нормальную -)и кстати call не зависит от esp. call esp только использует\изменяет но не более. а работа call зависит от esp только в плане валидности значения регистра - т.е. будет или нет seg_fault


Дата: Июн 8, 2003 23:29:32

я те не про call вещаю а про микроинструкции. ты все еще живешь в мире 286х? сall reg=
mov ss:[esp],eip
sub esp,4
mov eip,reg

теперь замени reg на esp и посмотри на код
если его выполнят строго по порядку то получишь как раз то что делал Пень 2


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