int twice(int x)

{

return x * 2;

}


twice:

pushq %rbp

.seh_pushreg %rbp

movq %rsp, %rbp

.seh_setframe %rbp, 0

.seh_endprologue

movl %ecx, 16(%rbp)

movl 16(%rbp), %eax

addl %eax, %eax

popq %rbp

ret

.seh_endproc


위에서 매개 변수를 스택 프레임에 올리는 과정에서

movl %ecx, 16(%rbp)


스택 프레임은 높은 주소에서 낮은 주소로 자라니까 16(%rbp)가 아니라 -16(%rbp)가 되어야 하는 것 아닌가요??