2015-04-05 5 views
0

Я хочу создать массив в памяти, как я бы в C сКак объявить и загрузить несколько значений массива в ОЗУ с помощью сборки ARM?

int i[] = {0,2,3,124,324,23,3,2} 

Как сделать это в сборке ARM? Видимо, я мог бы объявить некоторые значения, как это:

AREA  mydata, DATA 
array DCD 0,2,3,124,324,23,3,2 

Но как скопировать их в оперативной памяти в самом простом способе?

ответ

1

Когда вы собираете/связываете файл со строками, которые вы указали, значения будут уже сохранены в ОЗУ. Будет символ, называемый «массив», который представляет собой указатель на данные.

Если вы хотите получить доступ символа из другого файла, вам необходимо будет также добавить директиву EXPORT в файл, который содержит определение, например,

EXPORT array 

и добавить директиву ИМПОРТА в файл где вы хочу использовать символ, например

IMPORT array 

Вы также можете проверить синтаксис ассемблера, посмотрев на выходе ассемблера из компилятора, который составитель тривиального исходного файла, содержащего вашу декларацию I.

+0

В каком хранилище памяти должно храниться массив? Я ожидал, что это будет 0x20000000, но это не так. – JohnnyFromBF

+0

Компоновщик поместит символ в соответствии со своими собственными алгоритмами. Вы можете получить указатель на массив с чем-то вроде 'LDR r0, = array', который будет загружать адрес массива в r0 –