C中直接嵌套汇编的方式(不同编译器直接的差异)
C中直接嵌套汇编的方式(不同编译器直接的差异)#include <stdio.h>
int input,result;
int main()
{
result= 0;
input = 1;
__asm__
__volatile__ ("addl %1,%0":"=r"(result): "r"(input));
printf("%d\t%d\n",input,result);
return 0;
}
上面的代码在cfree 下通过了
但是在 dev-c++ 下编译通过而不能执行,原因是没有提供主程序
需要自己设置执行参数
VC++ 下则更是无法通过编译,莫名其妙
----------------解决方案--------------------------------------------------------
封装gcc 的应该都可以
vc格式不一样
他玩intel汇编
gcc dev-c++ cfree 等应该可以
该代码AT&A格式
dev-c++这个我试了,可以,不过结果变为 1 2
我不得其解
----------------解决方案--------------------------------------------------------
:( 这个是什么汇编啊,我怎么看不懂.....
----------------解决方案--------------------------------------------------------
我在 cfree 下通过了,但是结果是 1 1
dev-c++ 下编译通过,但还是不能执行!
不知道您安装程序后对于 dev-c++增加了什么设置没有 ?
----------------解决方案--------------------------------------------------------
不同编译器对代码的规范有不同的要求,当然结果会有不同了,有很多程序在不同编译器下得出的结果都不同,我也常遇到!
c-free出来的结果是: 1 1
DEV-cpp出来的是: 1 2
gcc 出来的也是: 1 2
VC下出错了,不能运行
----------------解决方案--------------------------------------------------------
楼主讲解下
----------------解决方案--------------------------------------------------------
回复 5# 的帖子
不是 result= 0;input = 1;
吗?怎么一个也不对?
----------------解决方案--------------------------------------------------------