Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: как засунуть значение переменной в регистр
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
sifadin
Здравствуйте!
Пишу ассемблерные вставки в С код
Нужно напр значение переменной pdata
загрузить в r3
Что то вроде asm(" ldr r0,pdata");
не проходит
из описаний следует что сначала надо загрузить
младшие 16бит потом старшие
Но я то не знаю адреса pdata ее знает компилятор
Сам компилятор подставляет уже конкрентные численные значения адреса (см рис)
Но при написании подставлять конкретные адреса я не могу
тк не знаю куда компилятор их определит
Как быть?
1113
вот пример - Task0Stack_v это имя какой-то переменной:
Код
__asm volatile ("movw r0, :lower16:Task0Stack_v \n\t");
__asm volatile ("movt r0, :upper16:Task0Stack_v \n\t");
KnightIgor
Цитата(sifadin @ Jan 15 2014, 08:46) *
Пишу ассемблерные вставки в С код
Нужно напр значение переменной pdata
загрузить в r3

Есть псевдоинструкция mov32 rn, src, которая расширяется компилятором в нужные две инструкции. Может прокатит и во вставке. Т.к. нет загрузки в регистр по косвенному адресу, чтобы загрузить именно переменную, надо, видимо, две инструкции, например,

mov32 r3, pdata
ldr r3, [r3]
sifadin
ок мерси
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.