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/ |