ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
667114 Топик полностью
misyachniy (13.04.2016 19:11, просмотров: 113) ответил IBAH на А насколько я понимаю, АРМу без разницы куда смотрит указатель в ПЗУ или в ОЗУ? команды загрузки одинаковые? Т.е. могу ли я использовать одну функцию и для флаш и для памяти?
Программисту на С без разницы, АРМу есть разница. Буду говорить о Cortex M3. //------ Если переменная/массив объявлена в ROM то компилятор использует псевдо каманду ADR ADR R1, TextMessage ; Write address value of a location labelled as TextMessage to R1 Ассемблер в свою очередь преобразует ее в ADR.N R1, . + 0x0136 Где точка означает текущее значение счетчика команд, 0x0136 - смещение где в ROM лежит значение указателя. Ассемблер вычислит и расположит его в ROM. То есть плюс 4 байта в ROM и дополнительное обращение к нему. //------ Если нужно указатель на RAM, то компилятор модет вычислить разность между текущим положением стека и требуемым значением указателя. В результате установка указателя на область в RAM может быть такая ADD R0, SP, #0x34