Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 20:39

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Float и SPF4 ( что и как )
Автор Сообщение
  Заголовок сообщения:   Ответить с цитатой
Вроде больше не выпадает, ну и ладно.
Сообщение Добавлено: Вт июл 28, 2009 11:44
  Заголовок сообщения:   Ответить с цитатой
MrYuran писал(а):
Что-то этот F. часто эксепшены вываливает.
Понадёжнее какие слова будут?
Чтобы с нужными проверками и т.д.


Слова F. FE. FS. печатают число со стека плавающей арифметики
( не со стека данных! )

P.S. Какая цепочка команд вызывает исключение?
Заметил вызов исключения: 0xFFFFFFFF DATA>FLOAT32 F.
далее вызов F. выводит infinity
Возможно это подразумевалось.

а может проблему решит если добавить явный вызов слова FINIT вначале?
Сообщение Добавлено: Вт июл 28, 2009 09:26
  Заголовок сообщения:   Ответить с цитатой
Что-то этот F. часто эксепшены вываливает.
Понадёжнее какие слова будут?
Чтобы с нужными проверками и т.д.
FF FF FF FF Ktermo EXCEPTION! CODE:C0000090 ADDRESS:00553458 WORD:F=
USER DATA: 00341E94 THREAD ID: 00000F64 HANDLER: 0012EFE8
STACK: (3) 7FFD9000 00195C6E 00150000 7C816D4F FFFFFFFF FFFFFAFF [FFFFFAFF]
RETURN STACK:
0012EFBC : 0056E0FF PrintFInf
0012EFC0 : 0056E22C F.
0012EFC4 : 0056EFF2 PrintFloat
Сообщение Добавлено: Вт июл 28, 2009 08:51
  Заголовок сообщения:   Ответить с цитатой
mOleg писал(а):
лучше для работы использовать знакомый инструмент, а незнакомый осваивать, по-возможности, самостоятельно

<offtop>
Такой уж я человек... Привык делать то, что нравится, и так, как хочется.
Тем более в пятницу обнаружил, что билдер сломался...
Переставлять - ещё что-нето отвалится (GCC к примеру), и так по кругу...
И потом, в стрессовой ситуации соображать начинаешь быстрее
</offtop>
Сообщение Добавлено: Пн июл 27, 2009 16:49
  Заголовок сообщения:   Ответить с цитатой
MrYuran писал(а):
Блин, если б начальник узнал, чем я занимаюсь уже не первый день вместо того чтобы за полчаса накидать в билдере отладчик и заниматься непосредственной работой...

гм.
я вот что хочу сказать, вы дискредитируете форт в глазах общественности (начальника) таким образом 8(
лучше для работы использовать знакомый инструмент, а незнакомый осваивать, по-возможности, самостоятельно.
А то опять будут на бедный Форт бочку катить 8( все-таки под него надо свои мозги несколько иначе поставить, и на это нужно время...
это мое ИМХО :)
Сообщение Добавлено: Пн июл 27, 2009 16:44
  Заголовок сообщения:   Ответить с цитатой
Гость писал(а):
Conductivity @ DATA>FLOAT32 F. CR ( можно FE. )

Не, Conductivity @ не нужно, число уже на стеке.
Йесс!!

Dpack

-------- Send: --------
FF 42 0 0 0 0 -146 0
-------- Echo: --------
FF 42 0 0 0 0 BA
-------- Receive: --------
FE Preamble FE OK
1 Status 1 OK
D2 4 Temperature 12 ,34 oC
E1 10 Concentrat 43 ,21 %
0 50 9A 44 449A5000 Conductivity 1234.5000
0 0 0 0 0 Corrected Conductivity 0.0000000
FF CS=FF OK
Ok ( FFFFFFFF(-1) )

Блин, если б начальник узнал, чем я занимаюсь уже не первый день вместо того чтобы за полчаса накидать в билдере отладчик и заниматься непосредственной работой...
:dmad;
Однако, направление ROT-ации я уже не путаю... :D
Сообщение Добавлено: Пн июл 27, 2009 16:36
  Заголовок сообщения:   Ответить с цитатой
MrYuran писал(а):
Остался крайний штрих:
FVARIABLE Conductivity
...
DUP . ." Conductivity " Conductivity ! F. CR
Получаю: ....


Conductivity @ DATA>FLOAT32 F. CR ( можно FE. )

P.S. Есть полезное слово DUMP ( addr # -- )
Сообщение Добавлено: Пн июл 27, 2009 15:36
  Заголовок сообщения:   Ответить с цитатой
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:15
  Заголовок сообщения:   Ответить с цитатой
VoidVolker писал(а):
MrYuran писал(а):
Однако остался ещё вопрос: как мне 4 байта (формат IEEE 754) перенести на флотовый стек, а потом обратно?

.


DATA>FLOAT32 FLOAT>DATA32 \ для коротких переменных см. src\spf_floatkern.f
Сообщение Добавлено: Пн июл 27, 2009 14:50
  Заголовок сообщения:   Ответить с цитатой
spf_floatkern.f


CODE 2.E
MOV DWORD -4 [EBP], # 2
FILD DWORD -4 [EBP]
RET
END-CODE
Сообщение Добавлено: Пн июл 27, 2009 14:27
  Заголовок сообщения:   Ответить с цитатой
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) перенести на флотовый стек, а потом обратно?

Должны быть слова для передачи данных между стеками без преобразования. Как вариант можно сохранить данные в переменную, а из неё их извлечь на стек.
.
Сообщение Добавлено: Пн июл 27, 2009 14:26
  Заголовок сообщения:   Ответить с цитатой
: 2e 2.E ;
: 1e 1.E ;
: .e .E ;

И откуда взялись 2.E, 1.E и .E, если ничего не подключалось?
Сообщение Добавлено: Пн июл 27, 2009 14:22
  Заголовок сообщения:   Ответить с цитатой
Гость писал(а):
и смотреть стековую нотацию нужных слов библиотеки

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

В каком хотя бы виде эти флоты в памяти хранятся?
Нигде никаких упоминаний...
Сообщение Добавлено: Пн июл 27, 2009 14:12
  Заголовок сообщения:   Ответить с цитатой
Однако остался ещё вопрос: как мне 4 байта (формат IEEE 754) перенести на флотовый стек, а потом обратно?
12.3E
Ok \ число на float-стеке
float F!
Ok \ занёс в переменную
HEX
Ok
float @ \ хочу посмотреть значение
Ok ( 9999999A(-66666666) ) \ ерунда какая-то
Должно получиться 41 44 СС CD (или наоборот)
Сообщение Добавлено: Пн июл 27, 2009 13:37
  Заголовок сообщения:   Ответить с цитатой
Спасибо, теперь допёр
FVARIABLE float
Ok
12.3E
Ok
float F!
Ok
float F.
infinity Ok ( 5705780 )
float F@ F.
12.300000 Ok ( 5705780 )
Сообщение Добавлено: Пн июл 27, 2009 13:19

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


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