32-битный G CC Компилятор хранения и манипулирования массивами символов - PullRequest
0 голосов
/ 30 марта 2020

Справочная информация: Я новичок в 32-битных компиляторах и создаю подпрограммы для управления массивами символов для встроенной системы с использованием недавно принятой цели: процессора SiLabs Leopard Gecko с использованием G CC 32-битного компилятора.

проблема: память в нашей встроенной системе ограничена, и я пытаюсь понять, как компилятор хранит массивы символов, чтобы мы эффективно использовали доступную оперативную память и Fla sh. Компилятор сообщает об использовании ОЗУ, которое увеличивается с шагом 4 байта, что соответствует 32-битному размеру слова по умолчанию (т. Е. От char X [1] до char X [4] все приводит к выделению ОЗУ в 4 байта, char [5] приводит к выделению отчет 8 байт).

Насколько я понимаю, компилятор будет хранить все переменные как 32-битные значения (за исключением длинных и т. д.)

Вопрос: подразумевает ли приведенный выше отчет памяти, что компилятор создает необходимый код сборки, чтобы упаковать char [4] в одно 32-битное слово и обработать разбор байтов, если бы я должен был написать строку, такую ​​как char Y = char Array [2]?

1 Ответ

0 голосов
/ 30 марта 2020

это не распределение. Silab Gecko - это ARM M-3 на базе u C. Этот u C чувствителен к выравниванию, и компоновщик размещает объекты таким образом, чтобы адреса делились на 4, чтобы избежать проблем с выравниванием. Это определено в скрипте компоновщика.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...