Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Почему у int и double разные размеры при x86 и x64?
|
|||
|---|---|---|---|
|
#18+
Когда ставлю в студии x86, Код: plaintext 1. 2. 3. 4. 5. 6. А когда выставляю x64, получаю Код: plaintext 1. 2. 3. 4. 5. 6. Почему так? Т.е., почему размеры одних типов меняются (size_t, указатели), а другие остаются неизменными? Почему у x86 и x64 одинаковая длина машинного слова? Ещё вопрос: что имеют ввиду, когда говорят, что тип атомарный? Я так понял, имеют ввиду, что он вмещается в машинное слово, которое и для x86, и для x64 4 байта. И я также понял, что это хорошо для многопоточности при синхронизации, поскольку с атомарными типами можно работать, как с Код: plaintext 1. , минуя блокировки. А что такого даёт атомарность int типу Код: plaintext 1. , чего нет у Код: plaintext 1. и правильно я понимаю, что чем больше по размеру аргумент шаблона T, тем больше времени уходит на синхронизацию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2017, 20:03 |
|
||
|
Почему у int и double разные размеры при x86 и x64?
|
|||
|---|---|---|---|
|
#18+
baden_badenПочему у x86 и x64 одинаковая длина машинного слова? с чего такой вывод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2017, 21:14 |
|
||
|
Почему у int и double разные размеры при x86 и x64?
|
|||
|---|---|---|---|
|
#18+
Изопропил, Думал, что раз длина int одинаковая, то и машинное слово должно быть одной длины, оно же совпадает с int. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2017, 21:59 |
|
||
|
Почему у int и double разные размеры при x86 и x64?
|
|||
|---|---|---|---|
|
#18+
Дай определение машинного слова, которым ты пользуешься. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2017, 22:03 |
|
||
|
Почему у int и double разные размеры при x86 и x64?
|
|||
|---|---|---|---|
|
#18+
А, выходит, что платформозависимая. Из вики Машинное слово — машинно-зависимая и платформозависимая величина, измеряемая в битах или байтах (тритах или трайтах), равная разрядности регистров процессора и/или разрядности шины данных (обычно некоторая степень двойки) Так что по поводу типов данных, которые то разные, то одинаковые на разных платформах и по поводу атомарности скажете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2017, 22:20 |
|
||
|
Почему у int и double разные размеры при x86 и x64?
|
|||
|---|---|---|---|
|
#18+
Размер указателя равен ширине шины адреса (точнее разрядности виртуального адресного пространства для процесса). Атомарными можно считать типы, перемещение которых в память из регистров и из памяти в регистры происходит атомарно, за один такт шины данных. Естественно, всё это машинозависимо. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2017, 22:32 |
|
||
|
Почему у int и double разные размеры при x86 и x64?
|
|||
|---|---|---|---|
|
#18+
А почему атомарные типы должны быть обёрнуты в atomic, потоки меняют побайтово или даже побитово, если не обернуть? И что такого даёт атомарность int типу Код: plaintext 1. 2. 3. и правильно я понимаю, что чем больше по размеру аргумент шаблона T, тем больше времени уходит на синхронизацию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2017, 22:39 |
|
||
|
Почему у int и double разные размеры при x86 и x64?
|
|||
|---|---|---|---|
|
#18+
baden_badenА почему атомарные типы должны быть обёрнуты в atomic, потоки меняют побайтово или даже побитово, если не обернуть? Для порядка/кроссплатформенности. Ну и операции с числами не ограничиваются сохранением в память. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2017, 22:58 |
|
||
|
Почему у int и double разные размеры при x86 и x64?
|
|||
|---|---|---|---|
|
#18+
baden_badenА, выходит, что платформозависимая. Из вики Машинное слово — машинно-зависимая и платформозависимая величина, измеряемая в битах или байтах (тритах или трайтах), равная разрядности регистров процессора и/или разрядности шины данных (обычно некоторая степень двойки) Так что по поводу типов данных, которые то разные, то одинаковые на разных платформах и по поводу атомарности скажете? Даже на одной архитектуре разные компиляторы могут разный размер int иметь Для полного сноса крыши - общие и адресные регистры могут иметь разную разрядность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2017, 23:14 |
|
||
|
Почему у int и double разные размеры при x86 и x64?
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. Но в остальных вопросах ещё не разобрался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2017, 23:36 |
|
||
|
Почему у int и double разные размеры при x86 и x64?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovДля порядка/кроссплатформенности. Ну и операции с числами не ограничиваются сохранением в память. Для какого порядка? А какие ещё операции, кроме чтения и записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2017, 23:37 |
|
||
|
Почему у int и double разные размеры при x86 и x64?
|
|||
|---|---|---|---|
|
#18+
baden_badenА какие ещё операции, кроме чтения и записи? Те, которые описаны в документации по шаблону atomic. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.04.2017, 23:53 |
|
||
|
Почему у int и double разные размеры при x86 и x64?
|
|||
|---|---|---|---|
|
#18+
baden_badenА, выходит, что платформозависимая. Из вики Машинное слово — машинно-зависимая и платформозависимая величина, измеряемая в битах или байтах (тритах или трайтах), равная разрядности регистров процессора и/или разрядности шины данных (обычно некоторая степень двойки) Так что по поводу типов данных, которые то разные, то одинаковые на разных платформах и по поводу атомарности скажете? По стандарту языка C++ (и также C) размеры переменных разных типов в байтах не определены, кроме размера типа char и его производных. Задается только относительное соотношение между этими размерами в виде неравенства через "больше или равно". Так что никаких гарантий что разное, что одинаковое, на разных платформа нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2017, 07:11 |
|
||
|
Почему у int и double разные размеры при x86 и x64?
|
|||
|---|---|---|---|
|
#18+
baden_badenКогда ставлю в студии x86, Код: plaintext 1. 2. 3. 4. А когда выставляю x64, получаю Код: plaintext 1. 2. 3. 4. Почему так? Т.е., почему размеры одних типов меняются (size_t, указатели), а другие остаются неизменными? Вполне логично: адресное пространство x86 = 2^32 байт, x64 = 2^64 байт Указатели (T*) и размеры (size_t) работают с адресным пространством, т.е. указатель x64 может указывать на любой байт из 2^64, соответственно он должен быть 64 бита или 8 байт. Тоже самое с size_t, размер может быть до 2^64. Остальные типы с адресным пространством никак не связаны, поэтому оставлены как есть, а для x64 добавлены новые. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2017, 09:41 |
|
||
|
Почему у int и double разные размеры при x86 и x64?
|
|||
|---|---|---|---|
|
#18+
baden_badenЕщё вопрос: что имеют ввиду, когда говорят, что тип атомарный? Я так понял, имеют ввиду, что он вмещается в машинное слово, которое и для x86, и для x64 4 байта. И я также понял, что это хорошо для многопоточности при синхронизации, поскольку с атомарными типами можно работать, как с Код: plaintext 1. , минуя блокировки. А что такого даёт атомарность int типу Код: plaintext 1. , чего нет у Код: plaintext 1. и правильно я понимаю, что чем больше по размеру аргумент шаблона T, тем больше времени уходит на синхронизацию? Атомарный значит его изменение происходит атомарно. И это касается в первую очередь изменения. Например если два потока сделают одновременно Код: plaintext 1. то атомарность гарантирует что х увеличится на 2. В других случаях может быть на 1. Почитай книжку , там хорошо написано про std::atomic. Размер аргумента не влияет на время. Память читается кэшами проца блоками по 64 байта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.04.2017, 09:51 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39435311&tid=2018194]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 275ms |
| total: | 527ms |

| 0 / 0 |
