Есть ли способ вычислить байты, выделенные для кадра стека функции?
Мне дали этот код на C, и мне нужно вычислить байты, выделенные для кадра стека функции arith. Я везде искал способ сделать это, но у всех разные ответы.
long arith(long x, long y, long z){
long t1 = x + y;
long t2 = z + t1;
long t3 = x + 4;
long t4 = y * 48;
long t5 = t3 + t4;
long rval = t2 * t5;
return rval;
}
arith:
.LFB0:
.cfi_startproc
endbr64
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
movq %rdi, -56(%rbp)
movq %rsi, -64(%rbp)
movq %rdx, -72(%rbp)
movq -56(%rbp), %rdx
movq -64(%rbp), %rax
addq %rdx, %rax
movq %rax, -48(%rbp)
movq -72(%rbp), %rdx
movq -48(%rbp), %rax
addq %rdx, %rax
movq %rax, -40(%rbp)
movq -56(%rbp), %rax
addq $4, %rax
movq %rax, -32(%rbp)
movq -64(%rbp), %rdx
movq %rdx, %rax
addq %rax, %rax
addq %rdx, %rax
salq $4, %rax
movq %rax, -24(%rbp)
movq -32(%rbp), %rdx
movq -24(%rbp), %rax
addq %rdx, %rax
movq %rax, -16(%rbp)
movq -40(%rbp), %rax
imulq -16(%rbp), %rax
movq %rax, -8(%rbp)
movq -8(%rbp), %rax
popq %rbp
.cfi_def_cfa 7, 8
ret
.cfi_endproc
Я пытался складывать байты каждый раз, когда мы вызываем тип данных длиной 6*8, что составляет 64 байта, но я не очень уверен в этом.