Перейти к содержанию
    

IAR ARM Assembler.

Нужно "приклеить" заплатку на ассемблере.

По старинке решил объявить сегмент данных и вставить директиву типа

.ORG 16334 
  DCD  tasc_Status

 

Но на сколько я понял, IAR ARM Assembler поддерживает только директивы резервирования байт, полуслов, слов, строк.

 

Для размещения байт во флеш есть директива "LTORG" но она дает указание

ассемблеру разместить константы с текущего значения счетчика программ.

 

Есть ли директива принудительно указать ассемблеру переменную в конкретном месте ОЗУ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ассемблер вообще не знает где озу где пзу...

ORG лучше вообще не использовать.

Надо размещать переменные в нужных секциях,а где какая секция указывать линкеру!

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ассемблер вообще не знает где озу где пзу...

ORG лучше вообще не использовать.

Надо размещать переменные в нужных секциях,а где какая секция указывать линкеру!

 

Директивы ORG в IAR ARM assembler нет.

Утверждение о том, что ассемблер и не знает где озу где пзу сомнительно.

AVR ассемблер понимает DSEG, CSEG, ESEG

 

http://www.atmel.com/webdoc/avrassembler/a..._directives.ORG

 

.DSEG; Start data segment
.ORG 0x120; Set SRAM address to hex 120 
variable: .BYTE 1; Reserve a byte at SRAM adr. 0x120

.CSEG 
.ORG 0x10; Set Program Counter to hex 10 
mov r0,r1; Do something

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

AVR ассемблер понимает DSEG, CSEG, ESEG

Во 1ых

вопрос про ARM, причем тут AVR - у AVR другая архитектура адресации...

Во 2ых

Вопрос про IARовский ассемблер - он для AVR кстати не понимает DSEG, CSEG, ESEG

там все раньше шло через RSEG а теперь как и в АРМ через SECTION

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Во 1ых

вопрос про ARM, причем тут AVR - у AVR другая архитектура адресации...

Во 2ых

Вопрос про IARовский ассемблер - он для AVR кстати не понимает DSEG, CSEG, ESEG

там все раньше шло через RSEG а теперь как и в АРМ через SECTION

 

В ответе было "ассемблер вообще не знает где озу где пзу...".

Как на мое мнение, слишком категоричное утверждение.

 

К тому же если директиву LTORG Объявить в ОЗУ, то ассемблер должен как то догадаться об этом и произвести инициализацию данных?

__ramfunc по моему еще не упразднили?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

К тому же если директиву LTORG Объявить в ОЗУ, то ассемблер должен как то догадаться об этом и произвести инициализацию данных?

__ramfunc по моему еще не упразднили?

если брать микроконтроллеры то из флеши в озу __ramfunc копирует код инициализации в библиотеке или Ваш собственный.

 

LTORG - это вообще вспомогательная директива, она в 99% случаях не нужна.

 

Кроме того если секция кода во флеше - то Вы не сможете к ней сделать LTORG в ОЗУ - слишком большое расстояние ;)

 

Да и потом, раз вы знаете про __ramfunc посмотрите листинг от компилятора или даже лучше asm файл и linker map файл там и секции будут и что куда покладено...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...