Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт окт 19, 2018 10:36

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 21 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 27, 2009 11:03 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
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 # )


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 27, 2009 11:52 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Библиотека float2.f доопределит ввод для FLOAT чисел. ( через NOTFOUND )
флоат число записывается с Е ( вывод F. FE. и др )

Стандартные флоат слоава есть в ядре ( src\spf_floatkern.f )

Одна из библиотек для обычной записи Формул ~ygrek\lib\neilbawd\opg.f


Последний раз редактировалось Kopa Пн июл 27, 2009 13:25, всего редактировалось 3 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 27, 2009 12:28 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
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. \ вывод числа в консоль


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 27, 2009 13:19 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Спасибо, теперь допёр
FVARIABLE float
Ok
12.3E
Ok
float F!
Ok
float F.
infinity Ok ( 5705780 )
float F@ F.
12.300000 Ok ( 5705780 )


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

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Однако остался ещё вопрос: как мне 4 байта (формат IEEE 754) перенести на флотовый стек, а потом обратно?
12.3E
Ok \ число на float-стеке
float F!
Ok \ занёс в переменную
HEX
Ok
float @ \ хочу посмотреть значение
Ok ( 9999999A(-66666666) ) \ ерунда какая-то
Должно получиться 41 44 СС CD (или наоборот)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 27, 2009 14:12 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Гость писал(а):
и смотреть стековую нотацию нужных слов библиотеки

: F~ ( F1 F2 F3 -- FLAG ) \ FLOAT-EXT
Непонятно ни назначение слова, ни комментарий

В каком хотя бы виде эти флоты в памяти хранятся?
Нигде никаких упоминаний...


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

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
: 2e 2.E ;
: 1e 1.E ;
: .e .E ;

И откуда взялись 2.E, 1.E и .E, если ничего не подключалось?


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

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1255
Благодарил (а): 3 раз.
Поблагодарили: 17 раз.
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) перенести на флотовый стек, а потом обратно?

Должны быть слова для передачи данных между стеками без преобразования. Как вариант можно сохранить данные в переменную, а из неё их извлечь на стек.
.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Последний раз редактировалось VoidVolker Пн июл 27, 2009 14:30, всего редактировалось 2 раз(а).

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

Зарегистрирован: Вс мар 04, 2007 08:02
Сообщения: 223
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.
spf_floatkern.f


CODE 2.E
MOV DWORD -4 [EBP], # 2
FILD DWORD -4 [EBP]
RET
END-CODE


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 27, 2009 14:50 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
VoidVolker писал(а):
MrYuran писал(а):
Однако остался ещё вопрос: как мне 4 байта (формат IEEE 754) перенести на флотовый стек, а потом обратно?

.


DATA>FLOAT32 FLOAT>DATA32 \ для коротких переменных см. src\spf_floatkern.f


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн июл 27, 2009 15:15 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
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 # -- )


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

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


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

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


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

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