Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 13:40

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
 Заголовок сообщения: Размышления о _CREATE-CODE в спф
СообщениеДобавлено: Пн фев 26, 2007 15:36 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Код:
CODE _CREATE-CODE
     LEA  EBP, -4 [EBP]
     MOV  [EBP], EAX
     POP EAX
     RET
END-CODE

На стек возвращается адрес со стека возвратов, причем адрес для возврата в место вызова.
Хм берем адрес спомощью pop по идеи стек возратов смещен на 4 байта, а там адрес может быть какой нибудь, как же это слово вернется через ret, тут без происков СПФ похоже не обходится. Что известно о этом?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Размышления о _CREATE-CODE в спф
СообщениеДобавлено: Пн фев 26, 2007 15:56 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Pretorian писал(а):
Хм берем адрес спомощью pop по идеи стек возратов смещен на 4 байта, а там адрес может быть какой нибудь, как же это


Не какой нибудь, а именно тот адрес возвратов указывающий на следующую команду
за вызовом слова определенного через CREATE.
Код:
REQUIRE SEE lib/ext/disasm.f

CREATE ZZZ 5 ,

0 TO MM_SIZE

: SSS ZZZ ;

SEE ZZZ
SEE SSS


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Размышления о _CREATE-CODE в спф
СообщениеДобавлено: Пн фев 26, 2007 16:28 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Mihail писал(а):
Не какой нибудь, а именно тот адрес возвратов указывающий на следующую команду
за вызовом слова определенного через CREATE.

Не совсем понятно, причем тут CREATE, а если его нет.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн фев 26, 2007 16:34 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
_CREATE-CODE без CREATE ни что ? Всмысле не трынькает ?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Размышления о _CREATE-CODE в спф
СообщениеДобавлено: Пн фев 26, 2007 17:10 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Pretorian писал(а):
Mihail писал(а):
Не какой нибудь, а именно тот адрес возвратов указывающий на следующую команду
за вызовом слова определенного через CREATE.

Не совсем понятно, причем тут CREATE, а если его нет.


Только притом, что он компилирует _CREATE-CODE
Вообще, можно и без него:

Код:
HEADER ZZZ ' _CREATE-CODE COMPILE, 5 ,

0 TO MM_SIZE

: SSS ZZZ ;

SEE ZZZ
SEE SSS




Код:
SEE ZZZ
56B130 E8D06EFEFF       CALL    552005  ( _CREATE-CODE )
56B135   05 00 00 00  00 0D 00 00  00 8E 17 E8  EB FF FF FF .........О.шы   
56B145   C3 55 55 00  00 53 50 45  4E 44 C1 17  5D 00 11 00 ├UU..SPEND┴.]...
56B155   00 00 8E 17  5D 00 06 48  56 00 00 06  52 45 53 55 ..О.]..HV...RESU
SEE SSS
56B140 E8EBFFFFFF       CALL    56B130  ( ZZZ )
56B145 C3               RET     NEAR


Вызвав _CREATE-CODE из SSS
на стеке возвратов лежат 0x56B135 адрес переменной со значением 5 , а
под ним 0x56B145 - адрес куда произойдет возврат из _CREATE-CODE.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB