Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: GNU as - вставить 32-х битную константу
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
e-yes
Пива всем && прочего фисташкового щастия,
Дано:
Код
        ldr  pc,[pc,#4]
        XXX =cstartup
cstartup:  ....  и т.д

Очень хотелось бы воспользоваться неким XXX, аналогом dcc32 в IAR'е. Т.е эта строчка должна вставить 32 бита - адрес метки cstartup.
Заранее спасибо.
Forger
Цитата(e-yes @ Nov 29 2007, 00:55) *
Пива всем && прочего фисташкового щастия,
Дано:
Код
        ldr  pc,[pc,#4]
        XXX =cstartup
cstartup:  ....  и т.д

Очень хотелось бы воспользоваться неким XXX, аналогом dcc32 в IAR'е. Т.е эта строчка должна вставить 32 бита - адрес метки cstartup.
Заранее спасибо.

Есть (взято из Crossworks, который работает как раз с GNU C/ASM):
Код
     ldr  pc,[pc,#4]
cstartup_address:
     .word cstartup

......
diwil
Метки это те же символы и обращаться с ними можно так же как и с символами.
За сим есть несколько способов:

1. Наиболее простой
Код
  ldr r0, =cstartup


2. Сложный
Код
  ldr r1, =maddr
  ldr r0, [r1]
  ....
maddr:
  .word cstartup


в обоих случаях в нулевом регистре будет значение равное адресу метки
e-yes
OllKorrekt, ya!:)
дело было в смещении, которое для кода в первом сообщении равно -4.

Спасибо всем откликнувшимсяwink.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.