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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 104 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пн май 21, 2007 14:56 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Поправь IMAGE-SIZE на скока надо и перекомпилируй SPF.

_________________
Меня нет, не будет и не было.


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

Зарегистрирован: Ср дек 06, 2006 12:42
Сообщения: 49
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
yz писал(а):
unreal666 писал(а):
Не про то. Я спрашивал про изменение в реальном времени. А то сейчас делаешь, например, 600000 ALLOT (т.е. выходим за границу вирт. размера секции кода) и при любой попытке записи вылазит ошибка ACCESS_VIOLATION.

Никак. Размер секции установлен в заголовках исполняемого файла и на ходу не меняется.
оказывается можно :)
Код:
0xF0000 ALLOCATE THROW DP !
\ Но при SAVE аллокированная область теряется
взято из FAQ по FORTH (обсуждение)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт май 25, 2007 07:47 
Что необходимо сделать,
чтобы SPF на выходе сформировал весь необходимый ассемблерный код программы.

т.е. Форт программу в ASM


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт май 25, 2007 12:06 
Не в сети

Зарегистрирован: Сб янв 27, 2007 22:00
Сообщения: 106
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Anonymous писал(а):
Что необходимо сделать,
чтобы SPF на выходе сформировал весь необходимый ассемблерный код программы.
т.е. Форт программу в ASM

Вы, конечно, можете слегка поменять дизассемблер и дизассемблировать код всех слов.
Но полученная ассемблерная программа все равно будет работать только внутри Форта.
Может быть, вы сформулируете задачу более подробно?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт май 25, 2007 16:43 
Сходу могу только предложить INCLUDED_L, хотя чую что это не то:

SPF_INTRO писал(а):
Результат компиляции слова в виде машинного кода можно посмотреть вручную с помощью дизассемблера:
Код:
REQUIRE SEE lib/ext/disasm.f
SEE слово

или получить построчный листинг
Код:
REQUIRE INCLUDED_L ~mak/listing2.f
S" файл, машкод которого хотим посмотреть"  INCLUDED_L
\ листинг будет лежать рядом с подключаемым файлом

Но это скорее отладочное средство внутреннего потребления, нежели полноценное средство кросс-компиляции.

Цитата:
чтобы SPF на выходе сформировал весь необходимый ассемблерный код программы.

Насколько ужесточаютс требования "необходимого ассемблерного кода" (это даже отдельно от вопроса что понимается под "программой", ведь большинство программ пишутся в нескольких исходных файлах)?.. То есть например и описания сегментов, и прочего-прочего тоже чтобы были, и чтобы сразу нажать большую красную кнопку и галушки сами в рот залетали... Было б хорошо, думаю.

Цитата:
т.е. Форт программу в ASM

Обычно перед буквосочетанием ASM стоит ещё одна буква. Это может быть M (masm), T (tasm), F (fasm), N (nasm). Все они различаются достаточно существенно.

(кстати INCLUDED_L самое место в SPF_DEVEL'ском разделе средств отладки)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб май 26, 2007 12:46 
Не в сети

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


http://fpauk.narod.ru/masmspf2.rar - генерит ассемблерное представление форт-системы для MASM.
http://fpauk.narod.ru/linuxspf.10.tar.bz2 - для GASM, порт СПФ под Линукс.


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

Зарегистрирован: Ср дек 06, 2006 12:42
Сообщения: 49
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Код:
REQUIRE S+ devel\~nn\lib\az.f
USER-VALUE chet
: IODA-SAY ( a # -- ~a ~# ) \ :-)
2>R SAVE-SOURCE 2R> SOURCE!
BEGIN NextWord DUP WHILE
2>R chet 1 + TO chet
REPEAT 2DROP
RESTORE-SOURCE
S" "
BEGIN chet WHILE  2R> S+ S"  " S+ chet 1 - TO chet REPEAT
;
: ~TYPE IODA-SAY TYPE ;
S" Привет всем фортерам мира" ~TYPE
можно ли упростить выражение IODA-SAY?


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
AlikasS писал(а):
можно ли упростить выражение IODA-SAY?

Можно попроще решить задачу.
Код:
: NTYPE 0 DO TYPE SPACE LOOP ;
: ST-WORDS 0 >R BEGIN NextWord R> 1+ >R OVER C@ [CHAR] . = IF 2DROP R> 1- EXIT THEN AGAIN ;
: TYPE~ ST-WORDS NTYPE ;
TYPE~  Привет всем фортерам мира .

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


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
chess писал(а):
Можно попроще решить задачу.

При втором подходе к штанге взять вес еще проще. :)
Код:
: NTYPE 0 DO TYPE SPACE LOOP ;
: TYPE~   0 >R BEGIN NextWord OVER C@ [CHAR] . = IF 2DROP R> NTYPE EXIT THEN RP@ 1+! AGAIN ;

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


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

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

CODE RP+@ ( offs -- x )
\ взять число со смещением offs байт от вершины стека возвратов (0 RP+@ == RP@)
     8B C, 44 C, 04 C, 04 C, \ MOV EAX, 4 [EAX] [ESP]
     RET
END-CODE
     
CODE RP+ ( offs -- addr )
\ взять адрес со смещением offs байт от вершины стека возвратов
     8D C, 44 C, 04 C, 04 C, \  LEA EAX, 4 [EAX] [ESP]
     RET
END-CODE

по идее 0 RP+ == RP@

_________________
Меня нет, не будет и не было.


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Pretorian писал(а):
по идее 0 RP+ == RP@

Да - правильно. В комменте ошибка - ну все люди ... :(

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


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

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
А вот это? Похоже? Какая то избыточность тут.
Код:
CODE C-R>    \ 94
     LEA  EBP, -4 [EBP]
     MOV  [EBP],  EAX
     POP EAX
     RET
END-CODE

CODE _CREATE-CODE
     LEA  EBP, -4 [EBP]
     MOV  [EBP], EAX
     POP EAX
     RET
END-CODE

Кстати C-R> не нашел в ANSI 94

_________________
Меня нет, не будет и не было.


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Pretorian писал(а):
А вот это? Похоже? Какая то избыточность тут.

Абсолютно идентичные коды. Что-то можно и выбросить. И опять комментарии в усталом состоянии шлепали. :(

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


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Pretorian писал(а):
CODE RP+@ ( offs -- x )
\ взять число со смещением offs байт от вершины стека возвратов (0 RP+@ == RP@)
8B C, 44 C, 04 C, 04 C, \ MOV EAX, 4 [EAX] [ESP]
RET
END-CODE

CODE RP+ ( offs -- addr )
\ взять адрес со смещением offs байт от вершины стека возвратов
8D C, 44 C, 04 C, 04 C, \ LEA EAX, 4 [EAX] [ESP]
RET
END-CODE

При внимательном просмотре ошибок в комментариях еще больше.
Правильно тут будет так:
Код:
CODE RP+@ ( offs -- x )
\ взять число со смещением offs байт от вершины стека возвратов (0 RP+@ == RP@)
     8B C, 44 C, 04 C, 04 C, \ MOV EAX, 4 [ESP][EAX]
     RET
END-CODE
     
CODE RP+ ( offs -- addr )
\ взять адрес со смещением offs байт от вершины стека возвратов
     8D C, 44 C, 04 C, 04 C, \  LEA EAX, 4 [ESP][EAX]
     RET
END-CODE

Проверка на своем ассме:
Код:
: rp+@ ( offs -- x )  $ 4 A=@XA ;  SEE rp+@
: rp+ ( offs -- addr ) $ 4 A=aXA ;  SEE rp+

И сравнение с оригиналом
Код:
SEE RP+@
SEE RP+

ЛОГ
Код:
CODE rp+@ (5 bytes)
5AD51B 8B440404         MOV     EAX , 4 [ESP] [EAX]
5AD51F C3               RET     NEAR
END-CODE                (2 instructions)


CODE rp+ (5 bytes)
5AD533 8D440404         LEA     EAX , 4 [ESP] [EAX]
5AD537 C3               RET     NEAR
END-CODE                (2 instructions)


CODE RP+@ (5 bytes)
5531BC 8B440404         MOV     EAX , 4 [ESP] [EAX]
5531C0 C3               RET     NEAR
END-CODE                (2 instructions)


CODE RP+ (5 bytes)
5531D4 8D440404         LEA     EAX , 4 [ESP] [EAX]
5531D8 C3               RET     NEAR
END-CODE                (2 instructions)

Ok

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт сен 16, 2008 15:31 
вот они, смертельные "детские" вопросы


Вернуться к началу
  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 104 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7  След.

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


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

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


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

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