OSDev

для всех
Текущее время: 05 май 2024, 18:03

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: модель данных для x86_64
СообщениеДобавлено: 21 авг 2014, 14:48 

Зарегистрирован: 24 ноя 2013, 15:59
Сообщения: 40
собственно, сабж. насколько я знаю, их четыре:
  • LLP64;
  • LP64;
  • ILP64;
  • SILP64.
сам я больше склоняюсь к ILP64, иначе 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 бита.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: модель данных для x86_64
СообщениеДобавлено: 21 авг 2014, 20:39 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Давно есть стандарт и нечего лохматить бабушку.

Кто не понял int равен базовому типу системы т.е 64 бита long 128 бит. Указатель 64


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: модель данных для x86_64
СообщениеДобавлено: 21 авг 2014, 21:41 

Зарегистрирован: 24 ноя 2013, 15:59
Сообщения: 40
pavia писал(а):
Давно есть стандарт и нечего лохматить бабушку.

Кто не понял int равен базовому типу системы т.е 64 бита long 128 бит. Указатель 64

нет никакого стандарта. все перечисленные модели применяются. кстати, где вы умудрились найти 64-битный int? это ж ILP64, большая редкость. обычно используется LP64, в венде - LLP64. а 128 битный long - вообще чушь, на x86-64 такого не бывает.
а указатели, кстати, не обязательны равны машинному слову. man x32 ABI. но это уже оффтоп.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: модель данных для x86_64
СообщениеДобавлено: 21 авг 2014, 22:48 
Аватара пользователя

Зарегистрирован: 16 май 2007, 23:46
Сообщения: 1126
Стандарт С
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)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: модель данных для x86_64
СообщениеДобавлено: 22 авг 2014, 01:49 

Зарегистрирован: 24 ноя 2013, 15:59
Сообщения: 40
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, вполне приемлемы. там только указан минимальный диапазон значений для каждого типа.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: модель данных для x86_64
СообщениеДобавлено: 22 авг 2014, 01:54 

Зарегистрирован: 24 ноя 2013, 15:59
Сообщения: 40
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?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: модель данных для x86_64
СообщениеДобавлено: 22 авг 2014, 12:21 

Зарегистрирован: 24 ноя 2013, 15:59
Сообщения: 40
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, который никакого отношения к размерам типов не имеет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: модель данных для x86_64
СообщениеДобавлено: 23 авг 2014, 17:01 

Зарегистрирован: 21 сен 2007, 17:24
Сообщения: 1088
Откуда: Балаково
Lincor писал(а):
ага, все ясно. тут речь о integer conversion rank, который никакого отношения к размерам типов не имеет.

Похоже что имеет, потому что в начале явно сказано о связи ранга с его точностью (по сути его размером).

Все модели мне не нравятся, потому что разные типы получили одинаковое содержание. Не вижу смысла приравнивать типы друг к другу. Обычно размер short является char*2, int является short*2, а long равен натуральному машинному размеру. Так сделано в большинстве C компиляторов.
Если в какой-то функции лучше будет работать long в место short, то надо прописывать long, а short просто не использовать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: модель данных для x86_64
СообщениеДобавлено: 23 авг 2014, 19:11 

Зарегистрирован: 24 ноя 2013, 15:59
Сообщения: 40
Himik писал(а):
Все модели мне не нравятся, потому что разные типы получили одинаковое содержание. Не вижу смысла приравнивать типы друг к другу. Обычно размер short является char*2, int является short*2, а long равен натуральному машинному размеру. Так сделано в большинстве C компиляторов.
Если в какой-то функции лучше будет работать long в место short, то надо прописывать long, а short просто не использовать.

таки да, ошибся. надо было написать не 32, а <64.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


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

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


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

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB