[an error occurred while processing this directive]
|
Процессор – 5510, симулятор
Переменные объявлены следущим образом:
.bss _high_re_freq_buf_cnt, 1
.bss _high_im_freq_buf_cnt, 1
.bss _low_re_freq_buf_cnt, 1
.bss _low_im_freq_buf_cnt, 1
.bss _high_re_sum, 2
.bss _high_im_sum, 2
.bss _low_re_sum, 2
.bss _low_im_sum, 2
далее код инициализации переменных:
*(#( low_im_freq_buf_cnt)) = #6
dbl(*(#(high_re_sum))) = #10
dbl(*(#(low_im_sum))) = #20
Суть проблемы в том, что если в начало секции .data добавить смещение в одно слово вроде .bss tmp, 1 – все ползет таким вот образом после выполнения этого кода (информация из Watch Window)
*(int*)low_im_freq_buf_cnt = 10
*(long*)high_re_sum = 10
*(long*)low_im_sum = 0
Такое впечатление, что 32-битные переменные надо выравнивать по двусловной границе (автоматом у меня это не делается). При всем том директива .align 2 положения дел не меняет - и в map-файле я вижу, что адреса остаются нечетными. Почему такое может происходить?
E-mail: info@telesys.ru