Appena sotto ho riportato il codice assembly, del programma:
passando il codice a gdb esso comincerà ad eseguirlo dall'istruzione "movl $0, %eax", il mio problema è, perché? Inoltre se qualcuno fosse in grado di commentare le seguenti istruzioni gliene sarei molto grato!
Come si può notare, il codice è stato ricavato con gpp poi ho sostituito l'etichetta main con _start per compilare poi con "as".
Codice:
#include <math.h>
int main() {
sqrt(6);
}
passando il codice a gdb esso comincerà ad eseguirlo dall'istruzione "movl $0, %eax", il mio problema è, perché? Inoltre se qualcuno fosse in grado di commentare le seguenti istruzioni gliene sarei molto grato!
Codice:
.file "Xprovadebug.c"
.text
.globl _start
.type _start, @function
_start:movl $0, %eax
.LFB0:
.cfi_startproc
pushl %ebp
.cfi_def_cfa_offset 8
.cfi_offset 5, -8
movl %esp, %ebp
.cfi_def_cfa_register 5
movl $0, %eax
popl %ebp
.cfi_def_cfa 4, 4
.cfi_restore 5
ret
.cfi_endproc
.LFE0:
.size _start, .-_start
.ident "GCC: (Ubuntu/Linaro 4.6.1-9ubuntu3) 4.6.1"
.section .note.GNU-stack,"",@progbits
Come si può notare, il codice è stato ricavato con gpp poi ho sostituito l'etichetta main con _start per compilare poi con "as".