Препроцессор не пропускает директивы asm - PullRequest
1 голос
/ 06 мая 2010

Я программирую на микропроцессор (Coldfire), и у меня нет ежедневного доступа к инструктору по микропроцессору, поэтому я хочу иметь возможность выполнять часть своего кода на компьютере.

Поэтому я пытаюсь пропустить часть своего кода при выполнении на компьютере, задав TEST .

Не работает Он пытается скомпилировать ассемблерный код и умирает, не зная, что не знает имен регистров (они определены правильно при компиляции против Coldfire, а не моего Intel Core Duo).

Есть идеи, почему это не работает? или, может быть, альтернативный способ запуска кода на ПК без комментирования?

Вот пример кода из моего проекта:


inline void ct_sistem_exit(int status)
{
#ifdef _TEST_
    exit(status);
#else
    asm volatile(
            "moveb #0,%%d1\n\t"
            "movel #0, %%d0\n\t"
            "trap #15\n\t"
            :
            :
            : "d0", "d1"
            );
#endif /* _TEST_ */
}

Если это поможет: использование gcc3 с cygwin в Netbeans 6.8

И как я определяю _TEST_:



#define _TEST_
#include "mycode.c"

int main(int argc, char** argv)
{
    ct_sistem_exit(0);
}

Ответы [ 2 ]

1 голос
/ 06 мая 2010

Очевидный вопрос: вы определили _TEST_? Вы можете сделать это в командной строке с помощью -D_TEST_.

Я могу скомпилировать ваш код, когда я его определю.

0 голосов
/ 06 мая 2010

Обычно вы не должны использовать имена символов, начинающиеся с подчеркивания.Они зарезервированы для использования компилятором и стандартными библиотеками.Скорее всего, где-то уже определен TEST .Это должно быть достаточно просто для проверки.

Вы можете попробовать использовать #warning, чтобы сообщить вам, когда вы создаете тестовую машину, что поможет вам проверить, что препроцессор делает то, что выожидать.

...