- Упаковка/распаковка чисел в плавающем формате
-
? Дмитрий - 12.07.2018 13:22
Собсна сабж. Почитал исходники Вильнюсского Бейсика - там вообше ни черта непонятно. Какой алгоритм распаковки и упаковки используется для сабжа (интересует именно IEEE754, PDPшный 32-битный формат float совпадает, а double неактуален)? У меня есть только распаковка числа в фиксированном формате, нужен экспоненциальный. Порылся в glibc - там нагромождение какое-то без каких-либо комментов.
-
? gid - 12.07.2018 19:51
Общераспространённая информация о плавающих числах бейсика такая - http://gid.pdp-11.ru/books/programming_BK10.html#__RefHeading__218
так получается, что double сделано не по стандарту IEEE754. у него порядок такой же как у float - 8 бит вместо 11. А одинарная точность из двойной делается тупым отбрасыванием младших битов мантиссы. Я когда смотрел исходники MACRO-11, чтобы узнать, как оно с плавающими числами работает, увидел такую фигню, удивился, и решил отложить всё это на время, пока что-нибудь не прояснится.
Вот там, http://gid.pdp-11.ru/books/dvk/dvk3_ch1.html#cha1.7.3.7 в описании команд MACRO-11 тоже даётся формат float и double. и у обоих порядок по 8 бит. Так что корни растут оттуда.
¤
Вот, кстати, ходили слухи, что в бейсике БК-0011 (без М) плавающие числа с двойной точностью были несовместимы плавающими числами с двойной точностью от бейсика БК-0010, как раз из-за того, что в бейсике БК-0011 double было сделано правильно, с порядком 11 бит.
Поэтому те, кто грузил .cod файлы имели разного рода глюки с числами.
-
? Дмитрий - 12.07.2018 22:15
Я откинул ПДПшный формат, взял IEEE754. Раз сделал FPU, то обязательно нужна упаковка/распаковка. Упаковка простая, а вот распаковка мне не по зубам. Кстати, вот что значит давно не программить на асме - привык ко всему готовому, низкоуровневые операции в голове отсуствуют.
-
? Дмитрий - 13.07.2018 13:16
Нашел в masm32 реализацию FloatToStr - коротко и понятно
- << Форум