Я посмотрел несколько руководств на YouTube. Они сказали, что следует использовать 32-битную архитектуру, а затем сказали, что «один цикл ЦП может одновременно получить доступ только к слову (равному собственному размеру ЦП, т.е. 4 байтам) из памяти». Пока я продолжал смотреть, это перестало иметь смысл, если я не предположил, что один цикл ЦП равен одному слову, а не меньшему, что кажется неправильным.
Изучая ассемблер, я понял, что память адресуется побайтно. Я мог бы легко получить доступ к байту, слову (сейчас я говорю о слове как 16-битном / 2-байтовом), двойном слове или четверном слове, и если они не подходят, то в заполнении нет необходимости.
Предположим, 32-битная система. ЦП должен иметь возможность извлекать из памяти двойное слово (32 бита = 4 байта) за раз, поскольку оно идеально вписывается в регистр. Это также означает, что он должен иметь возможность извлекать 1 или 2 байта за раз, но не более 4 байтов одновременно из-за ограничений регистра.
Для 64-битной системы, как следует из названия, ЦП может извлекать из памяти 64 бита (8 байт) за раз. Это также означает, что он может получать 32-битные, 16-битные и 8-битные значения.
Из-за этой идеи я не могу понять заполнение структуры и не могу полностью принять утверждение «1 цикл процессора = 4 байта в 32-битном режиме».
Если вы не упаковываете в регистр что-то меньшее байта (например, 4 бита), я не понимаю, зачем нужно заполнение необходимо. Поскольку минимальный размер доступа к регистру составляет 8 бит, имеет смысл добавлять заполнение во время компиляции, когда фрагмент данных, загружаемых в память, меньше 8 бит. Это гарантирует выполнение требования без необходимости тратить процессору дополнительные циклы на добавление самого заполнения.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ing-in-c-c
Я не могу понять заполнение структуры в C/C++. ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1767041551
Anonymous
Я посмотрел несколько руководств на YouTube. Они сказали, что следует использовать 32-битную архитектуру, а затем сказали, что «один цикл ЦП может одновременно получить доступ только к слову (равному собственному размеру ЦП, т.е. 4 байтам) из памяти». Пока я продолжал смотреть, это перестало иметь смысл, если я не предположил, что один цикл ЦП равен одному слову, а не меньшему, что кажется неправильным.
Изучая ассемблер, я понял, что память адресуется побайтно. Я мог бы легко получить доступ к байту, слову (сейчас я говорю о слове как 16-битном / 2-байтовом), двойном слове или четверном слове, и если они не подходят, то в заполнении нет необходимости.
Предположим, 32-битная система. ЦП должен иметь возможность извлекать из памяти двойное слово (32 бита = 4 байта) за раз, поскольку оно идеально вписывается в регистр. Это также означает, что он должен иметь возможность извлекать 1 или 2 байта за раз, но не более 4 байтов одновременно из-за ограничений регистра.
Для 64-битной системы, как следует из названия, ЦП может извлекать из памяти 64 бита (8 байт) за раз. Это также означает, что он может получать 32-битные, 16-битные и 8-битные значения.
Из-за этой идеи я не могу понять заполнение структуры и не могу полностью принять утверждение «1 цикл процессора = 4 байта в 32-битном режиме».
Если вы не упаковываете в регистр что-то меньшее байта (например, 4 бита), я не понимаю, зачем нужно заполнение необходимо. Поскольку минимальный размер доступа к регистру составляет 8 бит, имеет смысл добавлять заполнение во время компиляции, когда фрагмент данных, загружаемых в память, меньше 8 бит. Это гарантирует выполнение требования без необходимости тратить процессору дополнительные циклы на добавление самого заполнения.
Подробнее здесь: [url]https://stackoverflow.com/questions/79854860/i-cant-understand-structure-padding-in-c-c[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия