Ho da poco cambiato piattaforma passando a Linux su x86 (uso la sintassi
di gas/gcc), e mi ritrovo molto spaesato poiché sono pochissimi gli
elementi in comune con l'architettura che usavo precedentemente.
In particolare, ho notato che attraverso int 0x80 non posso leggere il
numero intero direttamente; piuttosto mi restituisce una stringa
all'interno di un buffer. Ok, vorrà dire che leggerò i caratteri della
stringa per poi elaborarli con una formuletta per ottenere l'intero, ma
vorrei chiedervi un consiglio: mi conviene leggere un carattere alla
volta, quindi chiamare int 0x80 ad ogni carattere, oppure usare un
buffer (da 50 byte ad es.) e chiamare il kernel ad ogni esaurimento del
buffer? Tra queste due soluzioni, qual è la più efficiente a vostro
parere? Voi quale usate?
Inoltre: la syscall per la lettura (int 0x80 con il 3 in %eax, più i
vari parametri) restituisce qualcosa, ad esempio per segnalare un errore
o il raggiungimento dell'EOF?
Grazie.
[cut]
> In particolare, ho notato che attraverso int 0x80 non posso leggere il
> numero intero direttamente; piuttosto mi restituisce una stringa
> all'interno di un buffer. Ok, vorrà dire che leggerò i caratteri della
> stringa per poi elaborarli con una formuletta per ottenere l'intero, ma
> vorrei chiedervi un consiglio: mi conviene leggere un carattere alla
> volta, quindi chiamare int 0x80 ad ogni carattere, oppure usare un
> buffer (da 50 byte ad es.) e chiamare il kernel ad ogni esaurimento del
> buffer? Tra queste due soluzioni, qual è la più efficiente a vostro
> parere? Voi quale usate?
sicuramente ti conviene leggere un blocco di caratteri alla volta, anche se
è abbastanza inutile reinventare tutte le volte la ruota quando le libc
fanno benissimo quello che chiedi
> Inoltre: la syscall per la lettura (int 0x80 con il 3 in %eax, più i
> vari parametri) restituisce qualcosa, ad esempio per segnalare un errore
> o il raggiungimento dell'EOF?
sì, testa eax, se ha il segno c'è stato un errore.
quando la read ritorna 0 è stato raggiunto l'eof.
--
sed -r 's/\.UI|UI\.//g'
Inviato da X-Privat.Org - Registrazione gratuita http://www.x-privat.org/join.php