Программисту на С без разницы, АРМу есть разница. Буду говорить о 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