Dante.cpp (Normal User)
Pro
Messaggi: 65
Iscritto: 23/11/2011
|
Appena sotto ho riportato il codice assembly, del programma:
Codice sorgente - presumibilmente C/C++ |
#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 sorgente - presumibilmente Plain Text |
.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". |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Ma la domanda è perché il programma viene eseguito dalla prima istruzione?
La risposta è ovvia ...
O non ho capito?
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Dante.cpp (Normal User)
Pro
Messaggi: 65
Iscritto: 23/11/2011
|
L'istruzione
Codice sorgente - presumibilmente Plain Text |
è nella riga 13. non mi pare la prima istruzione!
|
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Ma ti occupi di assembly senza avere le cognizioni di base?
La mov è la prima istruzione macchina per la CPU, le altre righe contengono direttive dell'assembler e c'è differenza
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Dante.cpp (Normal User)
Pro
Messaggi: 65
Iscritto: 23/11/2011
|
Si, ho studiato un po di assembly z80 come introduzione, ma nell'architettura x86 ci sono entrato solo ieri!
Forse involontariamente, hai comunque dato risposta al quesito. Ora so che le prime istruzioni sono direttive per il compilatore; tipo l'istruzione ORG in asmZ80, che dice al compilatore da quale locazione dovrà iniziare ad assemblare. Ecco spiegato perché gdb iniziava l'analisi dalla riga 13.
Avresti un po di documentazione da passarmi; oppure puoi darmi una mano commentando il codice?
Ultima modifica effettuata da Dante.cpp il 12/02/2012 alle 14:53 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Postato originariamente da Dante.cpp:
Si, ho studiato un po di assembly z80 come introduzione, ma nell'architettura x86 ci sono entrato solo ieri! |
Non fa differenza ... le direttive le prevedono tutti gli assembler ...
Forse involontariamente, hai comunque dato risposta al quesito. |
Non direi proprio "involontariamente" ...
Ecco spiegato perché gdb iniziava l'analisi dalla riga 13. |
Avresti un po di documentazione da passarmi; oppure puoi darmi una mano commentando il codice? |
La documentazione di cosa? L'assembly x86 è "enorme" ... puoi iniziare dai manuali Intel originali (migliaia di pagine ...) ...
Commentare quel codice non ti servirebbe a nulla ... se devi imparare, prendi qualche libro e inizia dall'abc
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|
Dante.cpp (Normal User)
Pro
Messaggi: 65
Iscritto: 23/11/2011
|
Non mi occorreva una critica della mia risposta, comunque il problema è stato risolto grazie. Perdono se la mia umile conoscenza non è ai tuoi livelli celestiali!
Ultima modifica effettuata da Dante.cpp il 12/02/2012 alle 20:26 |
|
nessuno (Normal User)
Guru^2
Messaggi: 6402
Iscritto: 03/01/2010
|
Postato originariamente da Dante.cpp:
Non mi occorreva una critica della mia risposta, comunque il problema è stato risolto grazie. Perdono se la mia umile conoscenza non è ai tuoi livelli celestiali! |
Non faccio nessuna critica "inutile" ma ti sto dicendo esattamente come stanno le cose.
Basta dire che non vuoi accettare i consigli che ti vengono dati ... senza stupida ironia ...
Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità. |
|