当前位置: 技术问答>linux和unix
inline asm問題
来源: 互联网 发布时间:2016-07-31
本文导语: int a=10, b; asm ("movl %1, %%eax;" "movl %%eax, %0;" :"=r"(b) /* output */ :"r"(a) /* input */ :"%eax" /* clobber...
int a=10, b;
asm ("movl %1, %%eax;"
"movl %%eax, %0;"
:"=r"(b) /* output */
:"r"(a) /* input */
:"%eax" /* clobbered register */
);
printf("Result: %d, %d n", a, b);
為什麼執行時會出現bash: ./intest: cannot execute binary file
有什麼辦法可以印出register的內容值嗎
thx
asm ("movl %1, %%eax;"
"movl %%eax, %0;"
:"=r"(b) /* output */
:"r"(a) /* input */
:"%eax" /* clobbered register */
);
printf("Result: %d, %d n", a, b);
為什麼執行時會出現bash: ./intest: cannot execute binary file
有什麼辦法可以印出register的內容值嗎
thx
|
我用Fedora10+gcc4.3.2编译运行,没有问题,输出
$ gcc -Wall -o intest test.c
$ ./intest
Result: 10, 10
建议楼主用gcc -S看看编译之后的汇编码,或者用objdump -d intest看看反汇编的结果
或者用gdb调试一下,在gdb里面可以用info registers看寄存器
$ gcc -Wall -o intest test.c
$ ./intest
Result: 10, 10
建议楼主用gcc -S看看编译之后的汇编码,或者用objdump -d intest看看反汇编的结果
或者用gdb调试一下,在gdb里面可以用info registers看寄存器
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。