Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Вт апр 23, 2024 18:28

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 17 ]  На страницу Пред.  1, 2
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 28, 2007 18:36 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
dvuugl писал(а):
Код:
CODE MAX ( n1 n2 -- n3 )
CMP EAX, [EBP]
JL # ' DROP
LEA EBP, 4 [EBP]
RET
END-CODE

JL # ' DROP - это JL rel(8/16/32), где rel это # ' DROP - относительный условный переход на адрес кода DROP, условие перехода - SF<>OF (если меньше), то есть если верхний (n2-находится в EAX) меньше n1 (n1-находится в стеке по адресу, значение которого находится в EBP) то делается DROP
(n2 заменяется на n1), после выполнения кода DROP по RET в коде DROP возврат на LEA EBP, 4 [EBP].
Иначе сразу проваливаемся на LEA EBP, 4 [EBP] - указатель EBP устанавливается на ячейку под n1, на вершине стека в EAX остается n2.
Да забыл сказать здесь # - знак непосредственного значения, то есть JL берет адрес кода DROP как константу(знак ' дает адрес кода слова следующего за ним (DROP)) и формирует код относительного условного перехода на адрес DROP из текущего адреса(переход может быть коротким, средним или длинным, что зависит от положения кода MAX относительно кода DROP - конкретно в СПФ сейчас это короткий переход - rel8).

_________________
С уважением, chess


Последний раз редактировалось chess Чт мар 01, 2007 10:06, всего редактировалось 2 раз(а).

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

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
dvuugl писал(а):
# ' DROP по-видимому формирует адрес перехода на машкод DROP, не понятно как.



' DROP - кладет на стек CFA слова дроп (точку входа в программу)
В словаере ASSEMBLER комманда # устанавливает непосредственную адресацию
смотри: lib\asm\486asm.doc

Для поисков определений можно использовать E> в : http://fpauk.narod.ru/dbgwc11.rar
Запускаешь spf4wc.exe REQUIRE Q-DBG samples\~mak\dbgwc.f
там
Код:
CASE-INS OFF
lib\ext\spf-asm.f
CODE TST
E> #


Цитата:
В CODE-блоке позволительны вызовы высокоуровневых слов ?


В системах с подпрограммным шитым кодом. В СПФ можно.


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

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


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

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


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

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