Forth http://fforum.winglion.ru/ |
|
Float и SPF4 ( что и как ) http://fforum.winglion.ru/viewtopic.php?f=39&t=2276 |
Страница 1 из 2 |
Автор: | MrYuran [ Пн июл 27, 2009 11:03 ] |
Заголовок сообщения: | |
Some Question... На стеке лежит float в виде 4-х байтов В каждой ячейке по байту, младший внизу, старший снаружи. Как мне его вывести на экран в человеческом виде ? (xx,yy e zz) А потом наоборот. Ввести с клавы плавающее число и упаковать соответственно на стеке |
Автор: | Гость [ Пн июл 27, 2009 11:31 ] |
Заголовок сообщения: | |
MrYuran писал(а): Some Question...
На стеке лежит float в виде 4-х байтов В каждой ячейке по байту, младший внизу, старший снаружи. Как мне его вывести на экран в человеческом виде ? (xx,yy e zz) А потом наоборот. Ввести с клавы плавающее число и упаковать соответственно на стеке Библиотека lib\include\float2.f и поиск по слову FLOAT |
Автор: | Гость [ Пн июл 27, 2009 11:34 ] |
Заголовок сообщения: | |
Ввод строк с клавиатуры например так: PAD DUP 80 ACCEPT ( addr # ) |
Автор: | Kopa [ Пн июл 27, 2009 11:52 ] |
Заголовок сообщения: | |
Библиотека float2.f доопределит ввод для FLOAT чисел. ( через NOTFOUND ) флоат число записывается с Е ( вывод F. FE. и др ) Стандартные флоат слоава есть в ядре ( src\spf_floatkern.f ) Одна из библиотек для обычной записи Формул ~ygrek\lib\neilbawd\opg.f |
Автор: | MrYuran [ Пн июл 27, 2009 12:28 ] |
Заголовок сообщения: | |
Kopa писал(а): флоат число записывается с Е
float2.f Ok ( 4294967295(-1) ) 12 E 6 12 E 6 ^ -2003 WORD OR FILE NOT FOUND что-то не так... Если не трудно, объясните основные концепции, а то я разбираться буду до конца дня... И так всё горит... |
Автор: | Гость [ Пн июл 27, 2009 13:05 ] |
Заголовок сообщения: | |
MrYuran писал(а): 12 E 6
^ -2003 WORD OR FILE NOT FOUND что-то не так... Если не трудно, объясните основные концепции, а то я разбираться буду до конца дня... И так всё горит... Слитно записывать и смотреть стековую нотацию нужных слов библиотеки. Флоат вводятся на отдельный стек и существуют слова по переносу чиссел D>F F>D и др. F. \ вывод числа в консоль |
Автор: | MrYuran [ Пн июл 27, 2009 13:19 ] |
Заголовок сообщения: | |
Спасибо, теперь допёр FVARIABLE float Ok 12.3E Ok float F! Ok float F. infinity Ok ( 5705780 ) float F@ F. 12.300000 Ok ( 5705780 ) |
Автор: | MrYuran [ Пн июл 27, 2009 13:37 ] |
Заголовок сообщения: | |
Однако остался ещё вопрос: как мне 4 байта (формат IEEE 754) перенести на флотовый стек, а потом обратно? 12.3E Ok \ число на float-стеке float F! Ok \ занёс в переменную HEX Ok float @ \ хочу посмотреть значение Ok ( 9999999A(-66666666) ) \ ерунда какая-то Должно получиться 41 44 СС CD (или наоборот) |
Автор: | MrYuran [ Пн июл 27, 2009 14:12 ] |
Заголовок сообщения: | |
Гость писал(а): и смотреть стековую нотацию нужных слов библиотеки
: F~ ( F1 F2 F3 -- FLAG ) \ FLOAT-EXT Непонятно ни назначение слова, ни комментарий В каком хотя бы виде эти флоты в памяти хранятся? Нигде никаких упоминаний... |
Автор: | MrYuran [ Пн июл 27, 2009 14:22 ] |
Заголовок сообщения: | |
: 2e 2.E ; : 1e 1.E ; : .e .E ; И откуда взялись 2.E, 1.E и .E, если ничего не подключалось? |
Автор: | VoidVolker [ Пн июл 27, 2009 14:26 ] |
Заголовок сообщения: | |
MrYuran писал(а): 12.3E Ok \ число на float-стеке float F! Ok \ занёс в переменную HEX Ok float @ \ хочу посмотреть значение Ok ( 9999999A(-66666666) ) \ ерунда какая-то Должно получиться 41 44 СС CD (или наоборот) Float-переменные хранят флоат-числа в виде 8 байт, поэтому и результат такой. Чтобы получилось 41 44 СС CD необходимо сохранить флоат-число в переменную в формате short-float (4 байта): Код: FLOAT r 12.3E r SF! r @ . 4144ССCD MrYuran писал(а): Однако остался ещё вопрос: как мне 4 байта (формат IEEE 754) перенести на флотовый стек, а потом обратно?
Должны быть слова для передачи данных между стеками без преобразования. Как вариант можно сохранить данные в переменную, а из неё их извлечь на стек. . |
Автор: | chu [ Пн июл 27, 2009 14:27 ] |
Заголовок сообщения: | |
spf_floatkern.f CODE 2.E MOV DWORD -4 [EBP], # 2 FILD DWORD -4 [EBP] RET END-CODE |
Автор: | Kopa [ Пн июл 27, 2009 14:50 ] |
Заголовок сообщения: | |
VoidVolker писал(а): MrYuran писал(а): Однако остался ещё вопрос: как мне 4 байта (формат IEEE 754) перенести на флотовый стек, а потом обратно? . DATA>FLOAT32 FLOAT>DATA32 \ для коротких переменных см. src\spf_floatkern.f |
Автор: | MrYuran [ Пн июл 27, 2009 15:15 ] |
Заголовок сообщения: | |
VoidVolker писал(а): FLOAT r
12.3E r SF! r @ . 4144ССCD Ура. Заработало. Остался крайний штрих: FVARIABLE Conductivity ... DUP . ." Conductivity " Conductivity ! F. CR Получаю: \ на стеке (общем) 449A5000 == 1234,5 449A5000 Conductivity EXCEPTION! CODE:C0000092 ADDRESS:0056E0F3 WORD:PrintFInf USER DATA: 00341E94 THREAD ID: 00001778 HANDLER: 0012EFE8 STACK: (3) 7FFD7000 0021F5FE 00150000 7C816D4F FFFFFFFF FFFFFC03 [0056D170] RETURN STACK: 0012EFC4 : 0056D19F FINF 0012EFC8 : 0056E0FA PrintFInf 0012EFCC : 0056E22C F. 0012EFD0 : 0056F21A FormFrame 0012EFD4 : 0056F287 Dpack 0012EFD8 : 00567C5B INTERPRET_ 0012EFDC : 00567CE2 INTERPRET 0012EFE0 : 00567F09 MAIN1 0012EFE4 : 0055516C CATCH 0012EFE8 : 0012EFF8 0012EFEC : 0012FFBC 0012EFF0 : 00567F59 QUIT 0012EFF4 : 0055516C CATCH 0012EFF8 : 00000000 0012EFFC : 0012FFBC 0012F000 : 0056B07D ERR-EXIT 0012F004 : 0056BC66 (INIT) END OF EXCEPTION REPORT А тут какая собака порылась? |
Автор: | Гость [ Пн июл 27, 2009 15:36 ] |
Заголовок сообщения: | |
MrYuran писал(а): Остался крайний штрих:
FVARIABLE Conductivity ... DUP . ." Conductivity " Conductivity ! F. CR Получаю: .... Conductivity @ DATA>FLOAT32 F. CR ( можно FE. ) P.S. Есть полезное слово DUMP ( addr # -- ) |
Страница 1 из 2 | Часовой пояс: UTC + 3 часа [ Летнее время ] |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |