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

 
 
> GCC препроцессор, Thumb/ARM, Как из исходника определить режим компиляции
Сергей Борщ
сообщение Dec 21 2007, 22:07
Сообщение #1


Гуру
******

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



Есть некоторая конструкция, которая должна компилиться по-разному в зависимости от того, компилится файл в ARM или THUMB режиме. Надо написать что-то вроде
Код
#if __CPU_MODE__ == 1  // THUMB mode
    *(--StackPointer) =   0x003F;           // SR value: system mode, FIQ & IRQ enabled, THUMB
#else
    *(--StackPointer) =   0x001F;           // SR value: system mode, FIQ & IRQ enabled, ARM
#endif

Понятно, что символ THUMB_MODE можно определить в командной строке gcc, но может быть существует какой-то стандартный символ, который определяет компилятор при запуске с ключем -mthumb? Или если его определять вручную в командной строке, то возможно существует какое-то общепринятое имя для этого символа? Поиск в гугле пока ничего не дал.


--------------------
На любой вопрос даю любой ответ
"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
 
Start new topic
Ответов
Harbour
сообщение Dec 27 2007, 06:41
Сообщение #2


Местами Гуру
*****

Группа: Validating
Сообщений: 1 103
Регистрация: 5-12-04
Пользователь №: 1 323



gch это precompiled header и к ключу -dM отношения, похоже, не имеет. ключ -dM генерит .mach файлы, полезно разве что для отладки gcc.
Go to the top of the page
 
+Quote Post
klen
сообщение Dec 27 2007, 07:37
Сообщение #3


бессмертным стать можно тремя способами
*****

Группа: Свой
Сообщений: 1 405
Регистрация: 9-05-06
Из: Москва
Пользователь №: 16 912



Не надо гнать на мой любимй компиллер! необоснованно!

итак имеем:

КЛЮЧИ ПРЕДЕФАЙНЕСЫ

по умолчанию (без ключей) #define __ARMEL__ 1
-marm #define __ARMEL__ 1
-marm -thumb-interwork #define __ARMEL__ 1 #define __THUMB_INTERWORK__ 1
-mthumb #define __ARMEL__ 1 #define __THUMBEL__ 1
-mthumb -thumb-interwork #define __ARMEL__ 1 #define __THUMBEL__ 1 #define __THUMB_INTERWORK__ 1

Таким образом есть все что Вам нада:

#ifdef __THUMBEL__
// тумб код
#else
// арм код
#endif
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 12th August 2025 - 15:37
Рейтинг@Mail.ru


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