PDA

View Full Version : LINGUAGGIO ASSEMBLY


stregone_giallo_rosso
05-12-2007, 17:34
Salve qualcuno sa dirmi come si comporta questa istruzione assembly???
imul 0xfffffff43(%esi,%ebx,4)%eax

andbin
05-12-2007, 20:16
Salve qualcuno sa dirmi come si comporta questa istruzione assembly???
imul 0xfffffff43(%esi,%ebx,4)%eax La sintassi è quella AT&T che personalmente mi fa :Puke:
Comunque imul è una "signed multiply". Sicuro che non manca una virgola prima di %eax?? Perché così mi sembra un po' strana.

stregone_giallo_rosso
05-12-2007, 22:40
Si scusami ho fatto un errore di trascrizione c'è una virgola!!:D quale sarebbe il risultato di questa espressione??? x caso (%esi+%ebx*4)*%eax

andbin
06-12-2007, 08:17
Si scusami ho fatto un errore di trascrizione c'è una virgola!!:D quale sarebbe il risultato di questa espressione??? x caso (%esi+%ebx*4)*%eaxLa operazione che compie è (se non sbaglio):

EAX = EAX * [ESI + EBX*4 + 0xfffffff43]

stregone_giallo_rosso
06-12-2007, 17:13
Ok grazie!! Cmq questo è il codice assembly puoi spiegarmi tutti i passaggi , devo trovare sei numeri, ho provato a farlo ma nn riesco a trovarli, puoi darmi qualke consiglio???
Dump of assembler code for function phase_2:
0x08048b20 <phase_2+0>: push %ebp
0x08048b21 <phase_2+1>: mov %esp,%ebp
0x08048b23 <phase_2+3>: push %esi
0x08048b24 <phase_2+4>: push %ebx
0x08048b25 <phase_2+5>: sub $0x28,%esp
0x08048b28 <phase_2+8>: lea 0xffffffd8(%ebp),%eax
0x08048b2b <phase_2+11>: push %eax
0x08048b2c <phase_2+12>: pushl 0x8(%ebp)
0x08048b2f <phase_2+15>: call 0x8048f10 <read_six_numbers>
0x08048b34 <phase_2+20>: mov $0x1,%ebx
0x08048b39 <phase_2+25>: add $0x10,%esp
0x08048b3c <phase_2+28>: lea 0xffffffd8(%ebp),%esi
0x08048b3f <phase_2+31>: nop
0x08048b40 <phase_2+32>: mov 0xfffffffc(%esi,%ebx,4),%eax
0x08048b44 <phase_2+36>: add $0x5,%eax
0x08048b47 <phase_2+39>: cmp %eax,(%esi,%ebx,4)
0x08048b4a <phase_2+42>: je 0x8048b51 <phase_2+49>
0x08048b4c <phase_2+44>: call 0x8049470 <explode_bomb>
0x08048b51 <phase_2+49>: inc %ebx
0x08048b52 <phase_2+50>: cmp $0x5,%ebx
0x08048b55 <phase_2+53>: jle 0x8048b40 <phase_2+32>
0x08048b57 <phase_2+55>: lea 0xfffffff8(%ebp),%esp
0x08048b5a <phase_2+58>: pop %ebx

0x08048b5b <phase_2+59>: pop %esi
0x08048b5c <phase_2+60>: pop %ebp
0x08048b5d <phase_2+61>: ret
0x08048b5e <phase_2+62>: mov %esi,%esi
End of assembler dump.

stregone_giallo_rosso
07-12-2007, 11:16
Up!

stregone_giallo_rosso
08-12-2007, 12:31
Up

stregone_giallo_rosso
10-12-2007, 00:17
Nessuno????:(

IceCoder
10-12-2007, 16:44
secondo me il codice è incompleto

prova a dumpare la funzione della riga:

0x08048b2f <phase_2+15>: call 0x8048f10 <read_six_numbers>

altrimenti come fai a sapere da dove legge i numeri?