|
|
  |
Как использовать внутри asm("...") значения из #define ? |
|
|
|
Nov 4 2009, 22:33
|
.
     
Группа: Участник
Сообщений: 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
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 5 2009, 12:54
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(ReAl @ Nov 5 2009, 12:49)  ... Я так и знал, что должен быть вариант!!! aaarrr меня чуть было не отговорил от моей идеи. Какой компилятор? - Думаю, что этот вариант будет работать с любым.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 5 2009, 19:58
|

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

|
Цитата(GetSmart @ Nov 5 2009, 14:54)  Думаю, что этот вариант будет работать с любым. Да. С любым вменяемым. Точности ради - традиционное/общепринятое название этого макроса STRINGFY Код #define STRINGFY2(x) #x #define STRINGFY(x) STRINGFY2(x) или так Код #define real_stringfy(x) #x #define stringfy(x) real_stringfy(x)
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Nov 5 2009, 20:34
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(ReAl @ Nov 6 2009, 01:58)  Да. С любым вменяемым. Точности ради - традиционное/общепринятое название этого макроса STRINGFY Опять?! Все самые прикольные макросы кто-то уже придумал до меня http://trac-hg.assembla.com/roxanne/browser/util.hА вообще, очень интересный случай. Оказывается и от "пустышки" есть польза.
Сообщение отредактировал GetSmart - Nov 5 2009, 20:17
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 6 2009, 13:23
|
.
     
Группа: Участник
Сообщений: 4 005
Регистрация: 3-05-06
Из: Россия
Пользователь №: 16 753

|
Цитата(ReAl @ Nov 6 2009, 15:56)  Ну у меня тоже есть мания величия, но по чужим исходникам (опять таки - по моему опыту  ) stringfy встречается чаще всех остальных вариантов вместе взятых. А применял ли кто-нить этот макрос внутри asm() ? Киньте ссылкой, плиз.
--------------------
Заблуждаться - Ваше законное право :-)
|
|
|
|
|
Nov 6 2009, 20:17
|

неотягощённый злом
     
Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643

|
Цитата(GetSmart @ Nov 6 2009, 16:23)  А применял ли кто-нить этот макрос внутри asm() ? В смысле? Real же дал пример. Поясните пожалуйста подробнее...
--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
|
|
|
|
|
  |
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0
|
|
|