OSDev http://osdev.su/ |
|
модель данных для x86_64 http://osdev.su/viewtopic.php?f=5&t=995 |
Страница 1 из 1 |
Автор: | Lincor [ 21 авг 2014, 14:48 ] |
Заголовок сообщения: | модель данных для x86_64 |
собственно, сабж. насколько я знаю, их четыре:
кто не понял, поясняю: речь о размерах типов. LLP64: short, int, long - 32 бита. long long, указатели - 64 бита. LP64: short, int - 32 бита. long, long long, указатели - 64 бита. ILP64: short - 32 бита. int, long, long long, указатели - 64 бита. SILP64: short, int, long, long long, указатели - 64 бита. |
Автор: | pavia [ 21 авг 2014, 20:39 ] |
Заголовок сообщения: | Re: модель данных для x86_64 |
Давно есть стандарт и нечего лохматить бабушку. Кто не понял int равен базовому типу системы т.е 64 бита long 128 бит. Указатель 64 |
Автор: | Lincor [ 21 авг 2014, 21:41 ] |
Заголовок сообщения: | Re: модель данных для x86_64 |
pavia писал(а): Давно есть стандарт и нечего лохматить бабушку. Кто не понял int равен базовому типу системы т.е 64 бита long 128 бит. Указатель 64 нет никакого стандарта. все перечисленные модели применяются. кстати, где вы умудрились найти 64-битный int? это ж ILP64, большая редкость. обычно используется LP64, в венде - LLP64. а 128 битный long - вообще чушь, на x86-64 такого не бывает. а указатели, кстати, не обязательны равны машинному слову. man x32 ABI. но это уже оффтоп. |
Автор: | pavia [ 21 авг 2014, 22:48 ] |
Заголовок сообщения: | Re: модель данных для x86_64 |
Стандарт С 6.3.1.1 The rank of a signed integer type shall be greater than the rank of any signed integer type with less precision. — The rank of long long int shall be greater than the rank of long int, which shall be greater than the rank of int, which shall be greater than the rank of short int, which shall be greater than the rank of signed char. Стандарт Си++ Plain ints have the natural size suggested by the architecture of the execution environment44) |
Автор: | Lincor [ 22 авг 2014, 01:49 ] |
Заголовок сообщения: | Re: модель данных для x86_64 |
pavia писал(а): Стандарт С 6.3.1.1 The rank of a signed integer type shall be greater than the rank of any signed integer type with less precision. — The rank of long long int shall be greater than the rank of long int, which shall be greater than the rank of int, which shall be greater than the rank of short int, which shall be greater than the rank of signed char. Стандарт Си++ Plain ints have the natural size suggested by the architecture of the execution environment44) э, в стандарте С же >=! по стандарту С, такие вещи, как, например, sizeof(char) == sizeof(long long) == 64, вполне приемлемы. там только указан минимальный диапазон значений для каждого типа. |
Автор: | Lincor [ 22 авг 2014, 01:54 ] |
Заголовок сообщения: | Re: модель данных для x86_64 |
pavia писал(а): Стандарт С 6.3.1.1 The rank of a signed integer type shall be greater than the rank of any signed integer type with less precision. — The rank of long long int shall be greater than the rank of long int, which shall be greater than the rank of int, which shall be greater than the rank of short int, which shall be greater than the rank of signed char. Стандарт Си++ Plain ints have the natural size suggested by the architecture of the execution environment44) это точно стандарт C? C99? |
Автор: | Lincor [ 22 авг 2014, 12:21 ] |
Заголовок сообщения: | Re: модель данных для x86_64 |
pavia писал(а): Стандарт С 6.3.1.1 The rank of a signed integer type shall be greater than the rank of any signed integer type with less precision. — The rank of long long int shall be greater than the rank of long int, which shall be greater than the rank of int, which shall be greater than the rank of short int, which shall be greater than the rank of signed char. ага, все ясно. тут речь о integer conversion rank, который никакого отношения к размерам типов не имеет. |
Автор: | Himik [ 23 авг 2014, 17:01 ] |
Заголовок сообщения: | Re: модель данных для x86_64 |
Lincor писал(а): ага, все ясно. тут речь о integer conversion rank, который никакого отношения к размерам типов не имеет. Похоже что имеет, потому что в начале явно сказано о связи ранга с его точностью (по сути его размером). Все модели мне не нравятся, потому что разные типы получили одинаковое содержание. Не вижу смысла приравнивать типы друг к другу. Обычно размер short является char*2, int является short*2, а long равен натуральному машинному размеру. Так сделано в большинстве C компиляторов. Если в какой-то функции лучше будет работать long в место short, то надо прописывать long, а short просто не использовать. |
Автор: | Lincor [ 23 авг 2014, 19:11 ] |
Заголовок сообщения: | Re: модель данных для x86_64 |
Himik писал(а): Все модели мне не нравятся, потому что разные типы получили одинаковое содержание. Не вижу смысла приравнивать типы друг к другу. Обычно размер short является char*2, int является short*2, а long равен натуральному машинному размеру. Так сделано в большинстве C компиляторов. Если в какой-то функции лучше будет работать long в место short, то надо прописывать long, а short просто не использовать. таки да, ошибся. надо было написать не 32, а <64. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |