2017-05-13 8 views
0

'추가'에 대한 피연산자 형식이 일치가이 코드에 문제가있어 : 나는 "의 gcc -g -o 파일이 file.s를"로 컴파일 할 때오류 :

.code32 
.data 
s: .asciz "Hello World!\n" 
.text 
.global main 

main: 
     pushl $s 
     call printf 
     addl $4, $esp 

     movl $1, %eax 
     movl $0, %ebx 
     int $0x80 
~      

그것을 나에게이 오류를 보여줍니다

오류 : 32 비트 리눅스 머신을 실행하는` '추가

임에 대한 피연산자 형식이 일치, GCC 버전 5.4.0. 미리 감사드립니다.

+3

'$ esp '가 잘못되었습니다. 당신이 그것을 발견 할 수 있는지보십시오. – EOF

+1

나는 무례한 뜻이 아니지만, 의회에 글을 쓰려면 세부 사항에 좀 더주의를 기울여야합니다. 그렇지 않으면 정말로 나쁜 시간을 보게 될 것입니다. –

+0

그래, 미안하지만, 나는 그것을 가지고있다. 나는 왜 그런지 모르겠다. "Segmentation fault (core dumped)" –

답변

1

addl $4, %esp이어야합니다. GAS 접두사 $은 상수를 나타냅니다. %은 레지스터입니다.