1
Aleph One에서 "재미와 이익을위한 스택 분쇄"를 망쳤으며 64 비트 용 코드를 컴파일하는 동안 프로세서, 스택 메모리는 일반적인 "sub $ VALUE, % REG"을 사용하여 할당되지 않습니다. Aleph One 기사에서 작업 할 때 64 비트 시스템에서 스택 할당이 없음
이
함수의 소스 코드입니다void function() {
char buffer1[5];
char buffer2[10];
int *ret;
ret = buffer1 + 32;
(*ret) +=8;
}
그리고 이것은 컴파일 된 버전입니다
function:
.LFB0:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movl $1868654947, -16(%rbp)
movb $0, -12(%rbp)
leaq -16(%rbp), %rax
addq $32, %rax
movq %rax, -8(%rbp)
movq -8(%rbp), %rax
movl (%rax), %eax
leal 8(%rax), %edx
movq -8(%rbp), %rax
movl %edx, (%rax)
nop
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
내가 GCC와 -m32 옵션을 사용하는 경우이 나타나는 동안 왜 표준 스택 할당이없는 ?
감사합니다. – last
@last 답변을 수락 된 것으로 표시하여 다른 사람들이 귀하를 도왔다는 것을 알도록하십시오. – fuz