Forth http://www.fforum.winglion.ru/ |
|
Quark2 в виде компонентов http://www.fforum.winglion.ru/viewtopic.php?f=23&t=2736 |
Страница 1 из 2 |
Автор: | Hishnik [ Вт июн 21, 2011 18:57 ] |
Заголовок сообщения: | Quark2 в виде компонентов |
Проект с компонентной форт-машиной. Смысл в том, что компоненты машины описываются или не описываются в зависимости от платформы и способа применения системы. Внешнее приложение инициализирует форт-машину, выделяя ей память и формируя (статически компилируя или динамически загружая) необходимые компоненты. В дальнейшем содержимое виртуального экрана (экранов) также забирается внешней программой и выводится в том виде, в котором это требуется приложению. Что требуется проработать - некий универсальный механизм callback-ов, который позволил бы форт-машине динамически достраивать интерфейс внешней программы. Имея перспективу в виде ARM как второй распространенной платформы, машинка пишется на Си для статической линковки в Qt. Компоненты Quark2 1. Ядро NOP DUP DROP OVER SWAP ROT NIP @ ! * U* / U/ MOD /MOD AND OR XOR SHL SHR SHLA SHRA LSHIFT RSHIFT NEGATE ABS NOT = > < U< U> + - , C@ C! C, DEPTH EXECUTE DP [C]DP HERE [C]HERE ALLOT [C]ALLOT 1a Расширение ядра 2DUP 3DUP 4DUP 2DROP 3DROP 4DROP 5DROP PICK XCHG BYTES WORDS CELLS D+ D- 1+ 1- 2* 2/ WITHIN MIN MAX RANGE UMIN UMAX URANGE +! ON OFF W@ W! W, W>D -TH CMOVE MOVE SMOVE FILL CFILL CLEARSTACK 2. Плавающая точка F, SF, -FTH FLOATS FDEPTH FLOAT S>F F>S FDUP F2DUP FDROP FSWAP FOVER FROT F+ F- F* F/ FNEGATE FABS F@ F! SF@ SF! PI FPI F0> F0< F0= FMIN FMAX 2а. Плавающая точка с трансцендентными операциями FSIN FCOS FSINCOS FSQRT FATAN FPATAN F2^X FEXP FGAUSS FLOG2 FLN 2b. Плавающая точка с расширением SIMD FX*X SSE:F(T)*G(T)DT SSE! SSE:[X]+=[Y] 3. Стек локальных переменных LOCALDEPTH >L L> L@ LDROP L>F F>L L>SF SF>L 4. Стек кадров FRAMEDEPTH FRAME{ }FRAME ARG0 ARG1 ARG2 ARG3 ARG4 ARG5 ARG6 ARG7 ARG8 ARG9 FRAME> >FRAME 5. Интерпретация PARSE DECIMAL HEX BIN \ // EVALUATE BASE TIB LINENUMBER 6. Компиляция STATE LIMIT [C]LIMIT GETDATA GETCODE CONTEXT CURRENT CREATE : ; VARIABLE CONSTANT ARRAY IF THEN ELSE BEGIN AGAIN UNTIL WHILE REPEAT { } DO LOOP +LOOP I J K IMAX IADDR IJ VOCABULARY DEFINITIONS FORTH IMMEDIATE DOES> [ ] CASE ENDCASE BREAK OF ENDOF <OF> TO +TO FROM ‘ [‘] [COMPILE] QUAN VALUE VECT 7. Файловые операции HF-OUT OPEN OPENRW NEWFILE CLOSE READFILE READCHAR WRITEFILE WRITECHAR READLINE L EMITF PRINTF CRF .F U.F F.F 8. Текстовый вывод EMIT CR CLS TOSTR GOTOXY WHEREXY WHEREX WHEREY COUNT TYPE U. . F. SETCOLOR SETBGCOLOR GETCOLOR GETBGCOLOR “ LINE” 8a. Графический вывод PSET PRESET PIXEL HLINE VLINE |
Автор: | Antender [ Вт июн 21, 2011 19:31 ] |
Заголовок сообщения: | Re: Quark2 в виде компонентов |
А этот форт будет безтиповым как все остальные или динамически типизированным как Factor и Tcl? |
Автор: | вопрос [ Вт июн 21, 2011 19:49 ] |
Заголовок сообщения: | Re: Quark2 в виде компонентов |
чем-то напоминает Кварк На какой это стадии? |
Автор: | Hishnik [ Вт июн 21, 2011 21:30 ] |
Заголовок сообщения: | Re: Quark2 в виде компонентов |
Antender писал(а): А этот форт будет безтиповым как все остальные или динамически типизированным как Factor и Tcl? Типизация в Форте лежит несколько выше самой вычислительной машины. Я пока не вижу смысла добавлять к списку features еще и "типизированный". вопрос писал(а): чем-то напоминает Кварк Он и есть вопрос писал(а): На какой это стадии? Проработка спецификаций после эксплуатации предыдущей версии на Qt. Результат понравился, но в силу того, что это был завершенный продукт, какие-то пункты остались адаптированными под этот продукт, а не под универсальный путь разработки. |
Автор: | вопрос [ Вт июн 21, 2011 23:27 ] |
Заголовок сообщения: | Re: Quark2 в виде компонентов |
Код открываться будет? ( нет, я ничего не хотел бы. просто любопытно ) |
Автор: | Hishnik [ Вт июн 21, 2011 23:38 ] |
Заголовок сообщения: | Re: Quark2 в виде компонентов |
вопрос писал(а): Код открываться будет? ( нет, я ничего не хотел бы. просто любопытно ) Посмотрим Кроме того, система-то компонентная... |
Автор: | вопрос [ Вт июн 21, 2011 23:55 ] |
Заголовок сообщения: | Re: Quark2 в виде компонентов |
EMITF PRINTF CRF В С есть форматированный вывод |
Автор: | Hishnik [ Вт июн 21, 2011 23:56 ] |
Заголовок сообщения: | Re: Quark2 в виде компонентов |
вопрос писал(а): EMITF PRINTF CRF Это вывод в файл с идентификатором HF-OUT. Довольно часто требуется создавать текстовые файлы и выводить туда результаты расчетов. |
Автор: | WingLion [ Ср июн 22, 2011 04:43 ] |
Заголовок сообщения: | Re: Quark2 в виде компонентов |
Возможность добавления компонентов, написанных на форте? (in) (out) ?? Компонент для работы с TCP/IP (UDP) ? |
Автор: | chess [ Ср июн 22, 2011 11:10 ] |
Заголовок сообщения: | Re: Quark2 в виде компонентов |
Хищник писал(а): Внешнее приложение инициализирует форт-машину, выделяя ей память и формируя (статически компилируя или динамически загружая) необходимые компоненты. Сколько выделенной памяти нужно для всех компонент? Не проще будет загружать все, как это обычно и делается? Или по-другому: в чем причина именно компонентного подхода? |
Автор: | Hishnik [ Ср июн 22, 2011 12:22 ] |
Заголовок сообщения: | Re: Quark2 в виде компонентов |
WingLion писал(а): Возможность добавления компонентов, написанных на форте? На Форте-то точно можно будет, обычным порядком. Речь о возможности пересобрать систему, отключив неподдерживаемые компоненты, или добавив специфичные для платформы. |
Автор: | Hishnik [ Ср июн 22, 2011 12:31 ] |
Заголовок сообщения: | Re: Quark2 в виде компонентов |
chess писал(а): Сколько выделенной памяти нужно для всех компонент? Не проще будет загружать все, как это обычно и делается? А откуда следует, что загружаться будет не все? chess писал(а): Или по-другому: в чем причина именно компонентного подхода? Например, ядро (п.1) можно реализовать и на форт-процессоре. SIMD имеет смысл на x86 и не имеет на ARM, а форт-процессор с ускорителем добавит еще и свои слова для параллельной обработки. Встроенной системе не нужен компилятор, а возможно, и интерпретатор. И т.д. |
Автор: | chess [ Ср июн 22, 2011 16:20 ] |
Заголовок сообщения: | Re: Quark2 в виде компонентов |
Хищник писал(а): Например, ядро (п.1) можно реализовать и на форт-процессоре. А разве ядро (п.1) для форт-процессора и для ARM будут одинаковы? |
Автор: | Hishnik [ Ср июн 22, 2011 17:29 ] |
Заголовок сообщения: | Re: Quark2 в виде компонентов |
chess писал(а): А разве ядро (п.1) для форт-процессора и для ARM будут одинаковы? Реализация, конечно, будет отличаться. Но сами слова ядра можно сделать для форт-процессора (собственно, они для него и есть), так что впоследствии программа, рассчитывающая только на слова ядра, будет переносима. Расширение ядра выбрано таким образом, чтобы не загружать платформу с ограниченной памятью тем, что "может пригодиться". При необходимости это реализуется на базе слов ядра, но мощной системе, понятное дело, не составит труда обеспечить это расширение уже при старте. |
Автор: | вопрос [ Ср июн 22, 2011 19:06 ] |
Заголовок сообщения: | Re: Quark2 в виде компонентов |
Хищник писал(а): chess писал(а): А разве ядро (п.1) для форт-процессора и для ARM будут одинаковы? Реализация, конечно, будет отличаться. Но сами слова ядра можно сделать для форт-процессора (собственно, они для него и есть), так что впоследствии программа, рассчитывающая только на слова ядра, будет переносима. Расширение ядра выбрано таким образом, чтобы не загружать платформу с ограниченной памятью тем, что "может пригодиться". При необходимости это реализуется на базе слов ядра, но мощной системе, понятное дело, не составит труда обеспечить это расширение уже при старте. вопрос писал(а): По поводу минимализма и чем он вредит форту и (форту - ладно) фортерам. Когда стремятся запрограммировать форт на 12-18 примитивах, это как раз есть игнорирование одной возможности форта - расширяемости вниз - подменяемости нижнего уровня
Неправильный путь мастер (неслабый мастер, т.к. минимализм - удел не дилетантов) тратит время на создание одного за другим минимальных фортов, изощряясьи всякий раз начиная заново Правильный путь программист начинает не с создания фортов, но с уважения к экономии своего времени, он создаёт большой форт с понятной структурой а после урезает его, подменяя примитивы, а всё остальное уже имея реализованным (и протестированное) |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |