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
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
我试过了,正常编译没问题 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