首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >预处理器不跳过asm指令

预处理器不跳过asm指令
EN

Stack Overflow用户
提问于 2010-05-05 22:07:15
回答 2查看 260关注 0票数 1

我正在编写微处理器(Coldfire)的程序,而且我不能每天访问微处理器培训师,所以我希望能够在计算机上执行我的一些代码。

因此,我试图通过定义测试在计算机上执行时跳过代码的一部分。

它不起作用。它试图编译asm代码,而死抱怨不知道寄存器名(它们的定义很好,是针对Coldfire编译的,而不是我的Intel Core Duo)。

知道为什么不行吗?或者是在pc上运行代码而不注释掉的另一种方法?

下面是我的项目中的示例代码:

代码语言:javascript
复制
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_ */
}

如果有用的话:在Netbeans 6.8上使用gcc3和cygwin

我定义_TEST_的方式是:

代码语言:javascript
复制
#define _TEST_
#include "mycode.c"

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

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-05 22:16:20

显而易见的问题是,您定义了_TEST_吗?您可以使用-D_TEST_在命令行中执行此操作。

我可以在定义代码时编译您的代码。

票数 1
EN

Stack Overflow用户

发布于 2010-05-05 22:17:24

通常不应该使用以下划线开头的符号名。它们保留给编译器和标准库使用。很可能已经在某个地方定义了测试。不过,它应该很容易检查。

您可能需要尝试使用#warning来告诉您何时构建测试机器,这将帮助您测试预处理器正在执行您期望的任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2777124

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档