bugaoxingniyaowo
不高兴你咬我
采纳率100%
2017-04-27 07:31 阅读 1.0k

求解,gcc编译C++代码为intel样式错误

c++代码

 int g_arr[10];

 int main()
 {
  g_arr[0] = 1;
  g_arr[1] = 2;
    g_arr[2] = 3;
 }

使用g++编译为intel样式的汇编代码
g++ -S -o main.s main.cpp -masm=intel
然后汇编为目标文件时报错
g++ -c -o main.o main.s

图片说明
查看编译后的汇编代码确实有问题,不知道是不是编译参数写错了还是gcc使用intel样式汇编时本身就有bug

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    iamoyjj 欧阳嘉 2017-04-27 07:43

    我试过了,正常编译没问题 g++ (GCC) 4.4.7 20120313 (Red Hat 4.4.7-18)

     int g_arr[10];
    
    int main()
    {
            g_arr[0] = 1;
            g_arr[1] = 2;
            g_arr[2] = 3;
            return 0;
    }
    
    

    main.s

        .file   "main.c"
        .intel_syntax noprefix
    .globl g_arr
        .bss
        .align 32
        .type   g_arr, @object
        .size   g_arr, 40
    g_arr:
        .zero   40
        .text
    .globl main
        .type   main, @function
    main:
    .LFB0:
        .cfi_startproc
        .cfi_personality 0x0,__gxx_personality_v0
        push    ebp
        .cfi_def_cfa_offset 8
        .cfi_offset 5, -8
        mov ebp, esp
        .cfi_def_cfa_register 5
        mov DWORD PTR g_arr, 1
        mov DWORD PTR g_arr+4, 2
        mov DWORD PTR g_arr+8, 3
        mov eax, 0
        pop ebp
        .cfi_restore 5
        .cfi_def_cfa 4, 4
        ret
        .cfi_endproc
    .LFE0:
        .size   main, .-main
        .ident  "GCC: (GNU) 4.4.7 20120313 (Red Hat 4.4.7-18)"
        .section    .note.GNU-stack,"",@progbits
    
    
    点赞 2 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2017-04-27 07:34

    看下你生成的汇编代码是什么,用的是masm汇编么

    点赞 1 评论 复制链接分享

相关推荐