Chinaunix

标题: gcc汇编请教,函数返回值不对 [打印本页]

作者: likec    时间: 2003-07-05 03:49
标题: gcc汇编请教,函数返回值不对
各位大侠,本人在学习过程中,想测试一下gcc中的汇编,写了个加法程序如下:
void add(int s,int *d)
{
     __asm__ __volatile__(
     "addl %1,%0"
     :"=m"(d)
     :"ir"(s),"m"(d)
     );
}
void main()
     int input=1;
     int *output;
     output=2;
     add(input,output);
     printf("output is: %d\n",*output);
}
怎么结果还是2,不是我要的3?
我用gcc -S编成汇编程序后,看不出毛病,也不知道如何调试?
另外,好像gdb没有dos下debug调试汇编的功能吧?哪位大侠给介绍一个linux下汇编调试工具。
作者: 无双    时间: 2003-07-05 10:35
标题: gcc汇编请教,函数返回值不对
int *output;
output=2;
?????
你这里只是让output指向一个常量
作者: odin_free    时间: 2003-07-05 13:05
标题: gcc汇编请教,函数返回值不对
linux下的汇编是nasm
作者: likec    时间: 2003-07-05 15:20
标题: gcc汇编请教,函数返回值不对
原帖由 "无双" 发表:
int *output;
output=2;
?????
你这里只是让output指向一个常量
   

不好意思打错了,在程序中是*output,否则编译过也运行不了。
结果还是一样。
作者: likec    时间: 2003-07-05 15:24
标题: gcc汇编请教,函数返回值不对
[quote]原帖由 "odin_free"]linux下的汇编是nasm[/quote 发表:
     
可是我不光是汇编还要和c结合的话,还是gcc好用吧。
作者: likec    时间: 2003-07-05 18:45
标题: gcc汇编请教,函数返回值不对
我知道怎么回事了,是在嵌入汇编子程序中,将d改为*d,即可。
作者: mgw    时间: 2003-07-05 22:54
标题: gcc汇编请教,函数返回值不对
to likec:

请问GCC的汇编资料在哪可以找到?能发一份给我吗?
unixnow@163.com
作者: likec    时间: 2003-07-06 07:32
标题: gcc汇编请教,函数返回值不对
原帖由 "mgw" 发表:
to likec:

请问GCC的汇编资料在哪可以找到?能发一份给我吗?
unixnow@163.com
   

都是网上找的,还有毛德操的《情境分析》第一章。
你可以在北大天网上搜gcc-inline-asm.pdf,试试看。 北大天网好像有问题了,已发。
bram@163.net
作者: mgw    时间: 2003-07-06 13:18
标题: gcc汇编请教,函数返回值不对
已收到,谢谢!




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2