View Full Version : Testo su assembly Cercasi
AnonimoVeneziano
21-03-2003, 17:19
Ciao a tutti, volevo imparare un po' l'assembly, se non altro per capire al meglio l'architettatura di una CPU 80x86 , e volevo un testo abbastanza universale , che mi insegnasse l'assembly su linux, quindi con sintassi Intel per NASM (l'assemblatore che uso) .
Vi ringrazio tanto per la vosta disponibilità
Ri-CIao
Perchè prprio il NASM ?!?!!?
Usa l'as del GCC... E' quello che usano anche per compilare parte del kernel...
AnonimoVeneziano
21-03-2003, 18:59
Ah ok, se mi dici che è meglio AS allora uso AS :D
Comunque allora un testo su AS , ne conosci? :)
Ciao
AnonimoVeneziano
21-03-2003, 19:09
Originally posted by "cionci"
No :D
Ah ecco , grazie :D
SI accettano altri suggerimenti utili come quello di Cionci :D (scherzo bagaio! ;) )
Ciao
Ad esempio questo è codice per il gcc...
E' una parte di un mio esame...
E' la traduzione di una funzione appartenente ad una classe C++...
.text
dieci: .double 0e10
venti: .double 0e20
.globl _elab2__2clG2stR2cl
_elab2__2clG2stR2cl:
pushl %ebp
movl %esp, %ebp
subl $84, %esp
pushl %eax
pushl %ebx
pushl %ecx
pushl %edi
pushl %esi
pushl 92(%ebp)
leal -80(%ebp), %eax #cca
pushl %eax
call ___2clR2cl
addl $8, %esp
movl $0, -84(%ebp) #i=0
inFor1: cmpl $4, -84(%ebp) #i<4
jl coFor1
jmp fiFor1
coFor1: movl -84(%ebp), %ecx
leal 16(%ebp), %eax #ss
fldl (%eax,%ecx,8) #ss.vv[i]
movl 92(%ebp), %eax #cc
fcompl 4(%eax,%ecx,8) #compara con cc.s.vv[i]
fstsw %ax
andw $0x0100, %ax
jnz coIf1
jmp coElse1
coIf1: leal 16(%ebp), %eax #ss
fldl (%eax,%ecx,8) #ss.vv[i]
movl 12(%ebp), %ebx #this
faddl 4(%ebx,%ecx,8) #+ s.vv[i]
leal -76(%ebp), %eax #ss
fstpl (%eax,%ecx,8) #cca.s.vv[i] =
jmp fiIf1
coElse1: fldl dieci #10
movl 12(%ebp), %ebx #this
faddl 4(%ebx,%ecx,8) #+ s.vv[i]
leal -76(%ebp), %eax #ss
fstpl (%eax,%ecx,8) #cca.s.vv[i] =
fiIf1:
incl -84(%ebp)
jmp inFor1
fiFor1:
movl $4, -84(%ebp) #i=0
inFor2: cmpl $8, -84(%ebp) #i<8
jl coFor2
jmp fiFor2
coFor2: movl -84(%ebp), %ecx
leal 16(%ebp), %eax #ss
fildl 64(%eax) #ss.a
movl 92(%ebp), %eax #cc
fcompl 72(%eax) #compara con cc.s.b
fstsw %ax
andw $0x0100, %ax
jnz coIf2
jmp coElse2
coIf2: fldl 16(%ebp,%ecx,8) #ss.vv[i]
movl 92(%ebp), %ebx #this
faddl 4(%ebx,%ecx,8) #+ cc.s.vv[i]
fstpl -76(%ebp,%ecx,8) #cca.s.vv[i] =
jmp fiIf2
coElse2: fldl venti #10
movl 12(%ebp), %ebx #this
faddl 4(%ebx,%ecx,8) #+ s.vv[i]
fstpl -76(%ebp,%ecx,8) #cca.s.vv[i] =
fiIf2:
incl -84(%ebp)
jmp inFor2
fiFor2:
leal -80(%ebp), %eax #cca
pushl %eax
pushl 8(%ebp) #ritorno
call ___2clR2cl
addl $8, %esp
popl %esi
popl %edi
popl %ecx
popl %ebx
popl %eax
leave
ret
Ah...per compilare un sorgente assembly con gcc basta scrivere:
gcc sorgente.asm -o output
Ovviamente output è il file eseguibile...
Se ci devi linkare anche altri file C o C++ basta fare :
gcc sorgente1.c sorgente2.asm sorgente3.c -o output
gcc sorgente1.cpp sorgente2.asm sorgente3.cpp -o output -lgpp
Io libri di as per Linux non ne ho mai trovati. Li ho cercati assiduamente anche in librerie specializzate ma ... niente da fare. Del resto il libraio benche' specializzato, su di un tema cosi' specifico, non puo' essere d'aiuto.
Non mi dispiacerebbe venire smentito dal suggerimento di un testo.
Cmq. ci si puo' arrangiare abbastanza bene con internet p.e. cercando con google "tutorial assembly linux". Si trovano diverse cose interessanti.
Ciao.
Io un libro in realtà ce lo avrei: http://www.ateneonline.it/LibroAteneo.asp?item_id=916
E' il mio libro di calcolatori elettronici...
Quindi, tu che lo utilizzi, mi sapresti dire se la sintassi per assembly contenuta nel testo e' quella AT&T ?
Lì usano come compilatore DJGPP che è un porting Windows del GCC...
La sintassi è quella appunto di as... Non so quale sia la sintassi AT&T...
Ok. Indirettamente mi hai risposto. DJGPP usa la sintassi AT&T(cosi ho letto in giro). Inoltre vedendo il listato della tua precedente risposta corrisponde a quanto sto' leggendo sui tutorial del caso trovati su Internet.
Grazie.
Ciao.
Originally posted by "AnonimoVeneziano"
Ciao a tutti, volevo imparare un po' l'assembly, se non altro per capire al meglio l'architettatura di una CPU 80x86 , e volevo un testo abbastanza universale , che mi insegnasse l'assembly su linux, quindi con sintassi Intel per NASM (l'assemblatore che uso) .
Vi ringrazio tanto per la vosta disponibilità
Ri-CIao
Da quel che so come libro per l'assembly sotto Linux ci dovrebbe essere:
Linux assembly language programming - Bob Neveln
Che dovrebbe trattare la sintassi intel per nasm...comunque oltre al nome non so altro e non ho idea di come sia come testo.
Andrea
Dimenticavo che e' in inglese.
Andrea
Originally posted by "AnonimoVeneziano"
Ah ecco , grazie :D
SI accettano altri suggerimenti utili come quello di Cionci :D (scherzo bagaio! ;) )
Ciao
Ti conviene usare NASM per scrivere codice Assembly a mano. GAS ha una gestione degli errori molto limitata (è stato creato pensando che dovesse assemblare codice assembly sempre corretto, cioè generato da un compilatore). NASM sta 10 volte avanti GAS.
Il libro che ti consiglio si chiama:
Assembly Language Step by Step di Jeff Duntemann edito da John Wiley & Sons.
E' un libro introduttivo e copre anche una parte su NASM sia sotto Dos che sotto Linux. La parte Linux è la parte finale, ma stai tranquillo che moltissima differenza non c'è fatti alcuni chiarimenti.
Se poi che ti serve per imparare l'architettura questo testo è + che consigliato a te, perchè presenta esaurienti capitoli sull'architettura e l'aritmetica binaria, conversioni binarie, esadecimali, ecc. ecc.
E' anche simpatico da leggere.
Ciao.
Originally posted by "cionci"
Io un libro in realtà ce lo avrei: http://www.ateneonline.it/LibroAteneo.asp?item_id=916
E' il mio libro di calcolatori elettronici...
Ho comprato questo libro. Incredibile... mi ha fornito un sacco di risposte che non avevo mai trovato da nessuna parte... Sono molto soddisfatto dell' acquisto tante' che in una settimana l'ho "divorato". Ovvio che ora volendo approfondire devo tornare con calma su diversi punti prima di assimilarli. Direi che e' ottimo per affrontare la programmazione assembler nonche' fornisce le basi teoriche dei processori PC e relativa architettura del sistema (chi avrebbe mai detto che spiega come creare driver?) quindi le teorie espresse si posso mette in pratica con qualunque sintassi si voglia utilizzare. Il testo propone as di DJGPP ma usare altro e' solo una pura formalita' di sintassi. Molto interessante la parte degli interrupt(non l'avevo mai approfondita cosi). Tante' che pensavo che fosse un'esclusiva MS-DOS(che ignorante che sono!)
Era da un po' che pensavo d'affrontare lo studio su come si sviluppa un sistema operativo, no non voglio svilupparne uno c'e' gia' chi l' ha fatto per noi, ora mi rendo conto che probabilmente senza le informazioni che ho avuto da questo testo, la comprensione di diverse cose annesse all'argomento SO sarebbe stata ardua.
Una nota e' doverosa : e' rivolto al mondo universitario(credo) quindi non gira intorno ai discorsi e va dritto al punto... cio' significa che da' per scontato alcune cose, e se non ne si e' a conoscenza occorre approfondire in altra sede.
Sì...è il libro di testo del mio corso di Calcolatori Elettronici...
Originally posted by "cionci"
Sì...è il libro di testo del mio corso di Calcolatori Elettronici...
Noi lo usiamo ad Architettura degli Elaboratori.
Tra gli autori c'è Paolo Corsini..non sarà quello del nostro forum... :confused:
Mi sa di si :D
Nel corso di Architettura degli elaboratori io ho usato il libro di Tanembaum 'Architettura deli computer'(mi pare), magari può interessare...
;)
Originally posted by "gokan"
Tra gli autori c'è Paolo Corsini..non sarà quello del nostro forum... :confused:
Mi sa di si :D
Nel corso di Architettura degli elaboratori io ho usato il libro di Tanembaum 'Architettura deli computer'(mi pare), magari può interessare...
;)
No non è lui...
Sono tutti e 3 miei prof...compreso Paolo Corsini (che ovviamente non è quello di questo sito)...
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.