Newsgroup: it.comp.os.linux.development
Titolo: Segmentation fault (assembler in linux)

Ciaoz a tuttiz,
io ho un problema con l'assembler in linea del gcc sotto linux: perchè la
seguente funzione per settare la modalita' grafica 320x200 a 256 colori
void Set_video_mode( void )
{
    asm("movw 0x0003,%ax; int $0x10");
}
mi dà luogo ad un segmentation fault?
Forse per usare l'assembler devo usare qualche particolare chiamata di
sistema?
Per questo chiedo aiuto a voi che spero sappiate gia' queste cose.
P.S.: Ah dimenticavo, perche' dicono che la sintassi dell'as86 è "movw
$0x10,%ax" per esprimere quello che nel masm si scrive "mov ax,0x10"
e poi se metto il segno del dollaro il gcc quando compilo mi dà errore e se
tolgo il dollaro compila tranquillamente?Bohhhhhhhhhhhhhhhhhhhhh
P.S2: Se la funzione è sintatticamente sbagliata qualcuno mi puo' dire dove?
P.S3: So STANCO, so STUFO(ma non mi arrendoooooooo)!

sistema?
i servizi del BIOS non funzionano su linux

 wrote in message
slrn87aj8d...@thx1138.localdomain...

e allora che faccio,considerando che non voglio usare la svgalib?

e allora che faccio,considerando che non voglio usare la svgalib?
non ho idea, prova a guardare i sorgenti della svgalib...
(perche' non la vuoi usare ???)
-- 
" Ho visto cose, che voi umani non potreste immaginare.
Sequenze RTSCTS in fiamme al largo dei bastioni di Termios.
Ho visto stringhe C balenare nel buio vicino alle porte UART.
E tutti quei momenti andranno perduti per sempre, come lacrime nella pioggia.
E' tempo di morire... "

 e allora che faccio,considerando che non voglio usare la svgalib?
Potresti usare la CLANLib. O accedere direttamente all'hardware della scheda.
-- 
  /Kinkie
Se sulla scatola c'e` scritto "Per windows 95 e superiori", dovrebbe
funzionare sotto Linux, vero?

e allora che faccio,considerando che non voglio usare la svgalib?
Usa GGI, 
http://www.ggi-project.org
Saluti,
    Mardy

 wrote in message
pC3e4.14602$I3.1...@news.infostrada.it...

Allora č meglio che mi spieghi meglio :-) .
C'č una funzione nel gcc corrispondente alla _farnspokeb( del Djgpp :
porting Dos del Gcc) che permette di scrivere direttamente nella memoria
all'indirizzo passato come parametro.
Forse č difficile da credere ma non voglio usare librerie preconfezionate,
chiamatemi folle, ma a me piace faticare per capire.
Ciaoz!!!!

Allora fai quello che fanno tutti: RTFM e/o i sorgenti!
--
____ __         __,_      __  _____
\  _\_ \  ___ _/ / /\  /\/  \/ / _/ It is better to reign in Hell
 \  _ \ \/ _ '/ , |\ VV / / / / _/ Than serve in Heaven.- MILTON
  \_,_/\_\_,_/_/|_| \__/\__/_/_/
      -- the one and only --     e-mail : 
blak...@tiscalinet.it
                                ICQ    : 59394345
The UNIX Guru's View of Sex:
$unzip;strip;touch;finger;mount;fsck;more;yes;umount;sleep

e allora che faccio,considerando che non voglio usare la svgalib?
Prima spiega cosa hai bisogno di fare.
-- 
ciao, | [Per rispondere togli "toglimi" dal mio indirizzo.]
Marco | * The Internet is full. Go away.  -- Joel Furr *
      | (Ri)scoprire fidonet: 
http://bbs.mi.linux.it

       | (Ri)scoprire fidonet: 
http://bbs.mi.linux.it
Ragazzi voi scoraggiate un povero boys 22enne alla programmazione linux a
basso livello.
Mi legate ad un particolare ambiente o libreria.
Mi avete tarpato le alucce( Mi sento un po' come Paulie il pappagallo del
film omonimo: l'avete visto? )
P.S.: Cmq cerchero' di seguire il consiglio :-)))))))))))



 all'indirizzo passato come parametro.
Il problema e` che sotto Linux tu hai a che fare con una cosina che si
chiama "memoria virtuale", che sotto dos NON esiste. Quindi se tu provi a
scrivere all'indirizzo 0x12345ffff, questo potrebbe stare in un posto
QUALSIASI della memoria "fisica".
Detto questo, un modo per scrivere direttamente in memoria c'e`:
se sei root, puoi usare /dev/kmem con delle ioctl, o forse anche /proc/kmem 
come se fosse un file. PROBLEMA: devi assicurarti di non andare a "rompere
i ramponi" al resto del sistema. Probabilmente il modo migliore per
imparare e` andarsi a vedere come sono fatte le routine di accesso a basso
livello della SVGALib.


Mi legate ad un particolare ambiente o libreria.
Programmare a basso livello su un sistema unix non e' come farlo
sotto dos, dove puoi fare quel che ti pare e tutto sembra semplice...


scrivere all'indirizzo 0x12345ffff, questo potrebbe stare in un posto
0x12345FFFF, belli gli indirizzi a 36 bit !!!! :-))))))))))


chiamatemi folle, ma a me piace faticare per capire.
Perche' non contribuisci allo sviluppo di qualche driver?
Se la cosa ti interessa fammi un fischio in email. :-)
Saluti,
    Mardy

Mi legate ad un particolare ambiente o libreria.
Usare X significa essere indipendenti. Se vuoi fare tutto a mano
necessariamente ti legherai all'hardware che sei capaca a gestire
tramite IN e OUT.


 0x12345FFFF, belli gli indirizzi a 36 bit !!!! :-))))))))))
E chi diavolo ha contato quante cifre stava usando... L'importante e`
rendere l'idea no :-)?


 funzionare sotto Linux, vero?
No. Perche' in Micro$oft il concetto di superiore e` ribaltato.
:-))


>sistema?
per questo genere di cose usa le SVGALIB.
la programmazione linux è molto diversa da quella per dos, niente
BIOS, solo driver scritti da appassionati e i servizi del kernel.