Show 150 posts per page |
.dsy:it. (http://www.dsy.it/forum/)
- Progetto della sicurezza di rete (http://www.dsy.it/forum/forumdisplay.php?forumid=257)
-- Homework assembly per lunedì 15/10/2007 (http://www.dsy.it/forum/showthread.php?threadid=32335)
Homework assembly per lunedì 15/10/2007
Ciao ragazzi, sono ancora un po' indietro con l'assembly ma quantomeno ho scritto i listati in C, giusto per avere un idea da cui partire...se ne avete bisogno li trovate in allegato.
Sono in unico file, trovate i commenti per poterli separare.
Ciao
Ciao,
qualcuno può spiegarmi brevemente come gestisce i numeri negativi?
sia la dichiarazione che l'uso dei registri...grazie...
qualcuno è riuscito a creare l'array con numeri casuali?
__________________
the groupies è un evento...
per i numeri negativi non c'è alcuna dichiarazione particolare è sufficiente usare gli operatori corretti. add e sub funzionano correttamente sia con i numeri positivi che con quelli negativi, mentre mul e div funzionano solo con i numeri positivi. Per moltiplicare o dividere numeri negativi devi usare rispettivamente imul e idiv.
Array, numeri casuali e funzioni
Per creare un vettore con i numeri casuali, è sufficiente appoggiarsi alla libreria standard del C, non ditemi che qualcuno ha talmente tanta voglia di scrivere una funzione che generi dei numeri casuali in assembly quando c'è ne già una nelle librerie standard int rand(void) è sufficiente stare attenti a come muovere i registri esp e ebp e si possono chiamare tutte le funzioni del C...anche quelle personalizzate....tipo per ordinare un vettore.... (voleva essere un suggerimento)
La cosa da ricordare è che le funzioni standard del C agiscono sui registri in un certo modo, cioè lasciano inalterati certi registri e ne possono modificare altri, magari le funzioni personalizzate non seguono questo tipo di schema e ci si può trovare qualche valore a troie in qualche registro che supponevamo non venisse toccato, comunque per tutte queste delucidazioni c'è un po' di materiale sul manuale di Paul Carter, che trovate sul sito www.drpaulcarter.com c'è anche la versione in italiano tradotta da Giacomo Bruschi. Che non c'entra con il Prof Danilo Bruschi del nostro corso ma che è valida ugualmente.
Per i più pigri con l'assembly il GCC può senz'altro aiutare
gcc -S -o esempio.asm listato.c
dove esempio.asm sarà il file generato dal gcc che contiene il codice assembly del listato C, che non credo sia compatibile con nasm, non ho provato, comunque è utile per farsi un'idea...
ho seguito le istruzioni sulla guida per chiamare le funzioni del c ma non funziona. Devo includere la libreria che contiene la funzione rand?
cmq non mi funziona neanche la scanf che c'è come esempio nella guida...help...please
__________________
the groupies è un evento...
scanf e Co.
Per prima cosa, ricordati che gli underscore prima del nome delle funzioni non vanno mai messi se compili con gcc, subito dopo la direttiva global nel segmento .text devi aggiungere extern e il nome della funzione che vuoi chiamare, per chiamare rand non devi includere nulla di speciale:
global asm_main
extern rand
poi quando la vorrai richiamare, utilizza la chiamata
call rand
e il valore ritornato sarà in eax
Mi raccomando prima della chiamata di allocare lo spazio giusto sullo stack. E quando finisci di aggiungere lo spazio, altrimenti arrivi alla fine del ciclo che sfondi lo stack e hai una segmentation fault.....
All times are GMT. The time now is 09:57. | Show all 6 posts from this thread on one page |
Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.