Forth
http://fforum.winglion.ru/

Работа с Com портом в SPF4 и сопутствующие вопросы
http://fforum.winglion.ru/viewtopic.php?f=39&t=2275
Страница 3 из 4

Автор:  Kopa [ Чт июл 23, 2009 16:08 ]
Заголовок сообщения: 

mOleg писал(а):
(стек заглатывает данные по 4 байта а не побайтно)
да и область стека огнаничена системой...


ремарка: 4-е байта размерность ячейки стека
а хранить в ней можно и байты ( мы же знаем, что на стек упало )

mOleg писал(а):
стека данных в EBP стека возвратов в ESP ...

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

MrYuran писал(а):
Ух, ё-моё... и это только отправка пакета...
А ведь ещё приём .


Решения могут быть разные и не обязательно вычурные:)

mOleg писал(а):
есть еще такой штамп:
( addr # --> ) OVER + SWAP DO I C@ Outport LOOP
.


устоявшееся слово
: BOUNDS ( addr n -- addr_end addr_begin ) OVER + SWAP ;

Автор:  chu [ Чт июл 23, 2009 16:24 ]
Заголовок сообщения: 

Kopa писал(а):
устоявшееся слово
: BOUNDS ( addr n -- addr_end addr_begin ) OVER + SWAP ;


Хм, буду знать. Спасибо. А то всегда так и писал: OVER + SWAP ...

Автор:  Kopa [ Чт июл 23, 2009 16:29 ]
Заголовок сообщения: 

chu писал(а):
Kopa писал(а):
устоявшееся слово
: BOUNDS ( addr n -- addr_end addr_begin ) OVER + SWAP ;


Хм, буду знать. Спасибо. А то всегда так и писал: OVER + SWAP ...


А в devel Spf4 почти это повсеместно:)

Автор:  Kopa [ Чт июл 23, 2009 16:44 ]
Заголовок сообщения: 

MrYuran писал(а):
Локальный стек - нету такого понятия?


Можно на стеке данных ввести стековый фрейм в Кварке

Для Spf4, возможно тоже накодить подобный механизм, если ещё не делали

P.S. Можно по форуму поискать обсуждения со словом DEPTH

Автор:  MrYuran [ Чт июл 23, 2009 17:22 ]
Заголовок сообщения: 

Kopa писал(а):
Можно на стеке данных ввести стековый фрейм в Кварке

Код:
\ выделить на стеке данных место под массив
\ вернуть неинициализированный массив и его длину на вершине стека
: FRAME ( # --> [frame] # ) >R SP@ R@ CELLS - SP! R> ;

Оно?
~moleg\lib\util\stackadd.f
Только каким местом его к моей беде приложить, не понимаю
То есть он просто спускает SP на длину массива и всё.

Автор:  mOleg [ Чт июл 23, 2009 17:31 ]
Заголовок сообщения: 

MrYuran писал(а):
Оно?

~moleg\lib\util\stackadd.f

нет, не оно, а ~moleg\lib\util\stack.f ( неименованные стеки )

Автор:  mOleg [ Чт июл 23, 2009 17:33 ]
Заголовок сообщения: 

MrYuran писал(а):
Только каким местом его к моей беде приложить, не понимаю
То есть он просто спускает SP на длину массива и всё.

еще раз, вам сказали, что не надо передавать через стек содержимое строки!
это большая глупость, не упорствуйте в ней :)

Автор:  MrYuran [ Пт июл 24, 2009 08:48 ]
Заголовок сообщения: 

Хорошо.
Тогда поясните, пожалуйста, как будет работать такая структура (из примеров)
Код:
-5 struct sample
            0 fld off_a
            2 fld off_b
            4 fld off_c
            1 fld off_d
       /struct

Что такое -5, и как мне узнать размер структуры по имени, чтобы кинуть её в поток
off_a ... off_в - это будут адреса полей или смещения?

Автор:  chu [ Пт июл 24, 2009 09:05 ]
Заголовок сообщения: 

можно посмотреть в исходнике: \devel\~moleg\lib\struct\fld.f

Автор:  chu [ Пт июл 24, 2009 09:08 ]
Заголовок сообщения: 

chu писал(а):
можно посмотреть в исходнике


сорри, посмотрел сам, пример как раз оттуда...

Автор:  Kopa [ Пт июл 24, 2009 09:30 ]
Заголовок сообщения: 

Топик обсуждения структур в SPF
Есть и приведённые реализации

P.S. На Форуме можно многие интересующие вопросы найти в обсуждениях.
Ещё у SPF4 неплохая документация:)

Автор:  mOleg [ Пт июл 24, 2009 13:25 ]
Заголовок сообщения: 

MrYuran писал(а):
Хорошо.
Тогда поясните, пожалуйста, как будет работать такая структура (из примеров)
Код:
-5 struct sample
            0 fld off_a
            2 fld off_b
            4 fld off_c
            1 fld off_d
       /struct
Что такое -5, и как мне узнать размер структуры по имени, чтобы кинуть её в поток
off_a ... off_в - это будут адреса полей или смещения?


в словаре будет автоматически создано слово /sample - его вызов будет оставлять размер структуры.

слова off_a и т.д. будут добавлять к адресу на входе смещение к нужному полю. То есть в данном выше примере:

100 off_a .
вернет значение 95
100 off_b .
вернет значение 97
и так далее

впрочем это в исходнике наблюдается:
/sample 7 <> THROW \ это размер получившейся структуры
3 off_a -2 <> THROW \ а дальше идет проверка правильность работы имен смещений
5 off_b 0 <> THROW
0 off_c -3 <> THROW
2 off_d 3 <> THROW

Автор:  mOleg [ Пт июл 24, 2009 13:26 ]
Заголовок сообщения: 

Kopa писал(а):
Ещё у SPF4 неплохая документация

не правильно слова расставлены:

у СПФ ЕЩЕ не плохая документация..
(в смысле большинство систем имеет еще более ужастную доку)
8(

Автор:  MrYuran [ Пт июл 24, 2009 14:24 ]
Заголовок сообщения: 

Код:
\ ЏҐаў®­ з «м­ п Ё­ЁжЁ «Ё§ жЁп Ї®ав 
: ComInit ( handle -> ior )
   >R
   DCB MyDCB DCBlength !
   MyDCB R> DUP >R GetCommState DROP
\ 9600 MyDCB BaudRate !
   1200 MyDCB BaudRate !
   0x80000000 MyDCB Mode !
   8 MyDCB ByteSize C!
   1 MyDCB StopBits C!
   2 MyDCB Parity C!
   MyDCB R> SetCommState ;

И всё равно 7 бит в байте...
Я сначала думал, померещилось. Посчитал клеточки, всё сходится.[/code]

Автор:  mOleg [ Пт июл 24, 2009 14:42 ]
Заголовок сообщения: 

MrYuran писал(а):
И всё равно 7 бит в байте...

в смысле передача ведется 7-и битовыми ээ последовательностями?

Страница 3 из 4 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/