Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Сб апр 20, 2024 00:45

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 45 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: Число ли?
СообщениеДобавлено: Ср сен 17, 2008 12:49 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Есть ли в СПФ что нибудь для определения, что в строке число? ( addr u -> flag )

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


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

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Код:
\ Число это? (только символы текущей системы счисления)
: NUMBER? ( c-addr u -> flag )
   0 0 2SWAP >NUMBER 2SWAP 2DROP NIP 0= ;

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


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

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
Pretorian писал(а):
: NUMBER? ( c-addr u -> flag )
0 0 2SWAP >NUMBER 2SWAP 2DROP NIP 0= ;

Так покороче в коде будет :
Код:
: NUMBER? ( c-addr u -> flag )
   0 0 2SWAP >NUMBER NIP NIP NIP 0= ;

Но есть один недостаток - не определит как число
вот такое например:
S" 12.34" (число с точкой).

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


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

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Число с точкой не надо. Пишу полноценный асм, если не наскучит, для СПФ. Проблема такая, нужно как то отделить слово от числа, но вот как? Скажем push eax (и все регистры получается)? А вот как push число?

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


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

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


Я бы посоветовал использовать семантику http://tracker.coreboot.org/trac/openfi ... /assem.fth
За тем можно поменять синтаксис как это я делаю для MSP430 http://fpauk.narod.ru/spmfor.1.rar
devel\~mak\MSP430\SRC\prefix.f - меняем постфикс на префикс
devel\~mak\MSP430\SRC\lex.f - меняем синтаксис


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

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

С чего это? Я отлично знаю 580-й ВМ, Z-80, x86, семантика будет стандартом к фасму, т.к. оно не отличается от Z-80 асмов.

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


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

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

Можно использовать NextWord
Код:
: push 0x68 C, ; IMMEDIATE
: # NextWord 0 0 2SWAP >NUMBER 2DROP DROP , ; IMMEDIATE

Код:
: proba
push # 1
push # 8
;
STARTLOG

SEE proba


Код:
CODE proba (11 bytes)
5BC7C3 6801000000       PUSH    , # 1
5BC7C8 6808000000       PUSH    , # 8
5BC7CD C3               RET     NEAR
END-CODE                (3 instructions)

Ok


ps. Знак числа еще учесть надо и еще автоматом генерить код
для push byte, push word, push dword взависимости от размера числа

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


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

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
chess писал(а):
Код:
: push 0x68 C, ; IMMEDIATE
: # NextWord 0 0 2SWAP >NUMBER 2DROP DROP , ; IMMEDIATE

Код:
: proba
push # 1
push # 8
;


Ну так я тоже могу, а вот что бы сочеталось как push 1 так и push eax?
Код:
: eax 0 ; IMMEDIATE
: ecx 1 ; IMMEDIATE
: edx 2 ; IMMEDIATE
: ebx 3 ; IMMEDIATE
: esp 4 ; IMMEDIATE
: ebp 5 ; IMMEDIATE
: esi 6 ; IMMEDIATE
: edi 7 ; IMMEDIATE

: push ( push r32 )
   ' EXECUTE 0x50 OR C, ; IMMEDIATE

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


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
а зачем так напрягаться? пусть числа распознает стандартный интерпретатор!

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

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

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


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
ты не понял, не надо делать работу интерпретатора за него!
нет необходимости самостоятельно разбирать где слово а где число

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


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

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Если регистр то опт код для push 0x50 базовый, а для числа 0x68. Так что все равно нужно знать число это или нет.

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


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

Зарегистрирован: Пн окт 15, 2007 17:24
Сообщения: 164
Откуда: Бийск
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Цитата:
Ну так я тоже могу, а вот что бы сочеталось как push 1 так и push eax?

а также отличался литерал от адреса ... не зря в ассемблерах была принята система соглашений для этих целей, помогающая правильно формировать режимы адресации, и незачем IMHO от нее уходить (хотя в ассемблерах для х86 она не очень внятная, в отличие от классики для PDP-11, VAX-11)

_________________
And so forth ...


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

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
Варнак писал(а):
а также отличался литерал от адреса ... не зря в ассемблерах была принята система соглашений для этих целей, помогающая правильно формировать режимы адресации, и незачем IMHO от нее уходить (хотя в ассемблерах для х86 она не очень внятная, в отличие от классики для PDP-11, VAX-11)

Я как раз и не ухожу от системы образования опт кодов. Проблема если почитать выше совсем в другом. Что бы эту проблему решить, нужно подумать, а заодно и людей послушать, мысль бывает нужной не всегда своя.

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


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

Зарегистрирован: Пн окт 15, 2007 17:24
Сообщения: 164
Откуда: Бийск
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Pretorian писал(а):
Проблема если почитать выше совсем в другом.

Если проблема - распознать тип операнда по тексту, то просто его надо указать явно или выбрать в соответствии с соглашениями - т.е. проблема в четком и однозначном задании синтаксиса входного текста (о чем уже говорилось где-то тут неподалеку:)).
А если проблема - до распознавания сформировать требуемый код, то она неразрешима без забегания вперед по тексту (при префиксной записи) и, опять таки, предварительного распознавания типа операнда.

_________________
And so forth ...


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

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


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

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


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

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