stavo leggendo la sezione del manuale di assembly sulle operazioni aritmetiche.
ma ho un dubbio.
allora se io faccio:
movl $3,%eax
movl $2,%ebx
mull %ebx
adesso in eax ho 6, e se voglio stamparlo sfruttando la printf del C farò:
pushl %eax
push $(una stringa opportunamente formattata)
call printf
addl $8,%esp
ecc.
il dubbio che invece non sono riuscito a risolvere è questo:
prendete il codice di sopra ma in eax mettiamoci 2147483648 (massimo numero rappresentabile su 32 bit con segno).
ecco, a questo punto il risultato dovrebbe essere in edx:eax.
ma non ho capito come si possa accedere ad edx:eax per prendere il risultato.... e pi come lo potrei stampare???
p.s (un'altra domanda): come mai se utilizzo movb,addb (per dire che sto oprando su un byte) mi dice che il suffisso b non è valido quando la guida dice chiaramente che sono validi i suffissi W,L,B ?
ma ho un dubbio.
allora se io faccio:
movl $3,%eax
movl $2,%ebx
mull %ebx
adesso in eax ho 6, e se voglio stamparlo sfruttando la printf del C farò:
pushl %eax
push $(una stringa opportunamente formattata)
call printf
addl $8,%esp
ecc.
il dubbio che invece non sono riuscito a risolvere è questo:
prendete il codice di sopra ma in eax mettiamoci 2147483648 (massimo numero rappresentabile su 32 bit con segno).
ecco, a questo punto il risultato dovrebbe essere in edx:eax.
ma non ho capito come si possa accedere ad edx:eax per prendere il risultato.... e pi come lo potrei stampare???
p.s (un'altra domanda): come mai se utilizzo movb,addb (per dire che sto oprando su un byte) mi dice che il suffisso b non è valido quando la guida dice chiaramente che sono validi i suffissi W,L,B ?