Сейчас на форуме: vsv1, _MBK_ (+3 невидимых)

 eXeL@B —› Вопросы новичков —› Принцип работы команды RET
Посл.ответ Сообщение

Ранг: 31.5 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 ноября 2007 02:26
· Личное сообщение · #1

Возможно детский вопрос. Объясните по возможности различие следующих команд:
RET
RET 8
RET 10
Опкоды само собой разные, следовательно и делать должны не одно и тоже.




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 20 ноября 2007 03:13
· Личное сообщение · #2

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

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh




Ранг: 10.7 (новичок)
Активность: 0.010
Статус: Участник

Создано: 20 ноября 2007 16:21
· Личное сообщение · #3

эээ не ври, товарисч! не удалится, а просто на это число увеличится указатель стека. конечно явушники грят что типа данные удаляются из стека, на самом деле просто передвигается указатель. слепые люди, те кто в глаза не видел ассемблера
ну то есть вот примерно так (проц 32-разрядный, для придирчивых ):

RET 8 (ESP = 0x12FF00 к примеру)
RET пошел в проц: ESP = ESP+4, т.е. 0x12FF04.
вернулись в прогу: ESP = ESP+8, равен 0x12FF0C.

в дебагере не проверял, лезь посмотри и скажи если я не прав.

RET 3 тож можно. тогда будет:
1) ESP = ESP+4
2) ESP = ESP+3
но при этом указатель "собьется" и короче пестец будет любой проге на яву



Ранг: 31.5 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 20 ноября 2007 16:38
· Личное сообщение · #4

Все ясно, как это сам недопер, всем спасибо за ответ


 eXeL@B —› Вопросы новичков —› Принцип работы команды RET
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати