При написании интерпретатора встал вопрос о представлении дробных в памяти.
Понятно, что стандарт IEEE 754.
Для целых мы имеем два варианта: младший байт по младшему адресу и старший байт по младшему адресу. На интеле — первый вариант.
А как в памяти расположены целые?
Понятно, что можно написать простую прогу с юнионом, в которой вывести все биты.
Это будет конкретное представление дробного в памяти пентюха.
А что говорит по этому поводу стандарт IEEE 754?
Где посмотреть?
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>При написании интерпретатора встал вопрос о представлении дробных в памяти. LVV>Понятно, что стандарт IEEE 754.
Честно говоря, это "понятно" никак с ходу не понятно:)
LVV>Для целых мы имеем два варианта: младший байт по младшему адресу и старший байт по младшему адресу. На интеле — первый вариант. LVV>А как в памяти расположены целые?
Наверно, точно так же — на тупоконечной архитектуре (big endian) старший байт по младшему адресу, на остроконечной (little endian) — наоборот.
LVV>Понятно, что можно написать простую прогу с юнионом, в которой вывести все биты. LVV>Это будет конкретное представление дробного в памяти пентюха. LVV>А что говорит по этому поводу стандарт IEEE 754? LVV>Где посмотреть?
Под рукой нет, но насколько я помню — он разрешает оба варианта.
On some machines, while integers were represented in little-endian form, floating-point numbers were represented in big-endian form. [3] Because there are many floating formats, and a lack of a standard "network" representation, no standard for transferring floating point values has been made. This means that floating point data written on one machine may not be readable on another, and this is the case even if both use IEEE 754 floating point arithmetic since the endian-ness of the memory representation is not part of the IEEE specification. [4]
На некоторых машинах, хоть целые и представлены в остроконечной форме, числа с плавающей запятой представлены в тупоконечной.
[skip]
Остро/тупо-конечность не является частью спецификации IEEE 754.
---
The optimist proclaims that we live in the best of all possible worlds; and the pessimist fears this is true
Здравствуйте, LaptevVV, Вы писали:
LVV>При написании интерпретатора встал вопрос о представлении дробных в памяти.
...
В байткоде используют т.н. canonical representation, а перед запуском(или выполнением) происходит преобразование в формат целевой платформы с последующим выполнением, либо эмуляция операций с использованием VM при отсутствии аппаратной поддержки.
В качестве canonical representation может выступать любой удобный формат. Если в качестве него выбрать формат самой распространенной используемой платформы, то в этом случае(выполнение на этой платформе) никаких преобразований выполнять не нужно.
Здравствуйте, wallaby, Вы писали:
W>Например, здесь
W>
W>On some machines, while integers were represented in little-endian form, floating-point numbers were represented in big-endian form. [3] Because there are many floating formats, and a lack of a standard "network" representation, no standard for transferring floating point values has been made. This means that floating point data written on one machine may not be readable on another, and this is the case even if both use IEEE 754 floating point arithmetic since the endian-ness of the memory representation is not part of the IEEE specification. [4]
W>На некоторых машинах, хоть целые и представлены в остроконечной форме, числа с плавающей запятой представлены в тупоконечной. W>[skip] W>Остро/тупо-конечность не является частью спецификации IEEE 754.
Понятно. В общем, можно делать как больше нравится.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, LaptevVV, Вы писали:
LVV>При написании интерпретатора встал вопрос о представлении дробных в памяти. LVV>Понятно, что стандарт IEEE 754. LVV>Для целых мы имеем два варианта: младший байт по младшему адресу и старший байт по младшему адресу. На интеле — первый вариант. LVV>А как в памяти расположены целые? LVV>Понятно, что можно написать простую прогу с юнионом, в которой вывести все биты. LVV>Это будет конкретное представление дробного в памяти пентюха. LVV>А что говорит по этому поводу стандарт IEEE 754? LVV>Где посмотреть?