当前位置: 代码迷 >> C语言 >> C中直接嵌套汇编的方式(不同编译器直接的差异)
  详细解决方案

C中直接嵌套汇编的方式(不同编译器直接的差异)

热度:167   发布时间:2007-11-22 23:00:03.0
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;
吗?怎么一个也不对?
----------------解决方案--------------------------------------------------------
  相关解决方案