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

 
 
> Как использовать внутри asm("...") значения из #define ?
GetSmart
сообщение Nov 4 2009, 22:02
Сообщение #1


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



Допустим я объявил так значение
#define BUF_LIMIT 128
и хочу написать внутри сишного кода в операторе asm("ADD R10,#BUF_LIMIT")
Но т.к. внутри оператора asm-а находится строка, то препроцессор не заменяет внутри неё предефайненные символы.
Как быть?


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
GetSmart
сообщение Nov 4 2009, 22:33
Сообщение #2


.
******

Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753



А может существует универсальный вариант со Stringizing Operator (#) внутри #define?
Я немного попытался, но с первого раза не получилось. Может кто-нить знает как? Пускай даже это будет выглядеть немного криво, но лишь бы работало.

Дело в том, что в asm() внутри одной строки можно её порезать на несколько строк типа asm("MOV " "R15" ",R14") и компилятор это нормально переварит.

Вот такой вариант у меня почему-то не работает, хотя выглядит логично.
#define ADD_STR_DEF(a) #a
asm("CMP R10,#" ADD_STR_DEF(BUF_LIMIT));

причём вот так вот компилит как надо:
asm("CMP R10,#" ADD_STR_DEF(128));

То есть при использовании # внутри дефайна, параметр не заменяется на предефайненый, а используется как строка.

Сообщение отредактировал GetSmart - Nov 4 2009, 22:54


--------------------
Заблуждаться - Ваше законное право :-)
Go to the top of the page
 
+Quote Post
ReAl
сообщение Nov 5 2009, 06:49
Сообщение #3


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Код
#define BUF_LIMIT 128

#define ADD_STR_DEF(a) #a

#define ADEF(a) ADD_STR_DEF(a)

asm("CMP R10,#" ADEF(BUF_LIMIT));


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 12:55
Рейтинг@Mail.ru


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