首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

一个关于内嵌汇编和C符号的有关问题

2013-01-07 
一个关于内嵌汇编和C符号的问题。本帖最后由 nadleeh123 于 2012-10-23 20:22:49 编辑3 int main(int argc,

一个关于内嵌汇编和C符号的问题。
本帖最后由 nadleeh123 于 2012-10-23 20:22:49 编辑  3 int main(int argc, char *argv[])
  4 {
  5         int i = 1;
  6         int ret = 0;
  7 
  8 #if 0
  9 test:
 10         ret = ret + i;
 11         i = i + 1;
 12         if(i < 10)
 13                 goto test;
 14 #endif
 15         __asm__ __volatile__(
 16                 "test:\n"
 17                 "add %0, %0, %1\n"
 18                 "add %1, %1, #1\n"
 19                 "cmp %1, #10\n"
 20                 "blt test\n"
 21 
 22                 : "+r" (ret)
 23                 : "r" (i)
 24                 : "memory"
 25         );
 26 
 27         printf("%d\n", ret);
 28 
 29         return 0;
 30 }


代码如上,本来是用于阐述C里面goto 结构和汇编符号跳转指令的实质性的一段代码示例,主要就是第8行那里,如果#if 1
下面__asm__() 中的内容也不屏蔽去编译的话 居然不报任何提示...求大神讲解这种情况编译器如何处理2个相同的符号,#if 0的时候结果是45,#if 1 是55.

[解决办法]
两个test为什么起同一个名字?容易混淆

热点排行