1
私はAleph Oneの "Fun and Profitのためのスタックを壊してしまった"と混乱していて、64ビットのコードをコンパイルしている間にスタックメモリは通常の "sub $ VALUE、%REG"を使って割り当てられません。Aleph Oneの記事で作業中に64ビットシステムでスタック割り当てが行われない
これは、関数のソースコードです:
void function() {
char buffer1[5];
char buffer2[10];
int *ret;
ret = buffer1 + 32;
(*ret) +=8;
}
そして、私はgccで-m32オプションを使用する場合、それが表示されている間、標準的なスタック割り当てがありませんなぜこれがコンパイルされたバージョン
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
です?
ありがとうございました。 – last
@last他の人があなたを助けたことを知っているように、回答を受け入れたものとしてマークすることを忘れないでください。 – fuz