реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> ARM Assembler; Определить имя для регистра;
Troll
сообщение Mar 16 2012, 07:46
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 30-06-05
Из: С-Петербург
Пользователь №: 6 406



Приветствую!

Коллеги, может кто подскажет.
Позволяет ли GNU ARM ассемблер задать псевдо имя для регистра? Типа:
Код
__asm__ volatile (
"Var1 equ R0  \n\t"
"Var2 equ R1   \n\t"
"mov  Var1,#1  \n\t"
);


Спасибо.


--------------------
Hemos Pasado
Go to the top of the page
 
+Quote Post
diwil
сообщение Mar 21 2012, 12:38
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(Troll @ Mar 21 2012, 12:03) *
UP


или
.def ua_c = r5
или
.set u_a, r5
Go to the top of the page
 
+Quote Post
Troll
сообщение Mar 21 2012, 13:26
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 104
Регистрация: 30-06-05
Из: С-Петербург
Пользователь №: 6 406



diwil! спасибо за ответ.
Только чего-то не работает

Код
                ".set    ua_c,r5            \n\t"
                "mov    ua_c,#0            \n\t"

компилятор ругается: "Error: ARM register expected -- `mov ua_c,#0'"

Сообщение отредактировал IgorKossak - Mar 21 2012, 15:45
Причина редактирования: Поднятие темы запрещено правилами!


--------------------
Hemos Pasado
Go to the top of the page
 
+Quote Post
diwil
сообщение Mar 21 2012, 13:43
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 366
Регистрация: 5-09-06
Из: Санкт-Петербург
Пользователь №: 20 107



Цитата(Troll @ Mar 21 2012, 17:26) *
diwil! спасибо за ответ.
Только чего-то не работает

Код
                ".set    ua_c,r5            \n\t"
                "mov    ua_c,#0            \n\t"

компилятор ругается: "Error: ARM register expected -- `mov ua_c,#0'"


значится облом.
однако, если ассемблер из Цэ вызывать,
то можно просто Сишными дефайнами
#define VAR r1
и т.д.
Go to the top of the page
 
+Quote Post
alx2
сообщение Mar 27 2012, 08:18
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 340
Регистрация: 25-10-05
Из: Пермь, Россия
Пользователь №: 10 091



Что значит "ассемблер из Цэ вызывать"? sm.gif
Препроцессор (cpp) - это отдельная программа которую можно вызвать когда угодно и обработать какой угодно текст. Не обязательно на языке C.
В gcc-враппере даже специальное значение опции -x предусмотрено - assembler-with-cpp


--------------------
Всего наилучшего,
Alex Mogilnikov
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 27 2012, 09:44
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Слабо понятно, зачем спрашивавшему обзывать в инлайн-асме конкретный регистр, почему не положиться на тот, который предоставит компилятор, но если очень хочется...
CODE
void Test()
{
    register uint32_t Variable1 __asm__("r0");
    __asm__ volatile
    (
        "mov  %[Var1], #1"
        : [Var1] "=r" (Variable1)
        :
    );
}


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 08:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01415 секунд с 7
ELECTRONIX ©2004-2016