Torna indietro   Hardware Upgrade Forum > Software > Programmazione

CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso
CHUWI CoreBook Air è un ultraleggero da 1 kg con Ryzen 5 6600H, display 14" 16:10 e 16 GB LPDDR5. Offre buona portabilità, autonomia discreta e costruzione in alluminio, ma storage PCIe 3.0 e RAM saldata limitano l'espandibilità. A 549 euro sfida brand più noti nella stessa fascia di mercato.
Roborock Saros 20: il robot preciso e molto sottile
Roborock Saros 20: il robot preciso e molto sottile
Il nuovo robot di Roborock per l'aspirazione della polvere e il lavaggio dei pavimenti spicca per immediatezza d'uso e per l'efficacia dell'azione, grazie anche a un ridotto sviluppo in altezza. Saros 20 integra un motore da ben 36.000Pa di potenza e un sistema di lavaggio a due panni rotanti, con bracci estensibili e un sistema di navigazione molto preciso.
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm
ASUS e HIFIMAN uniscono le forze per creare ROG Kithara, cuffie gaming con driver magnetici planari da 100mm, design open-back e microfono MEMS full-band. Una proposta che ambisce a coniugare fedeltà per audiofili e performance ludiche, disponibili a 319 euro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 30-05-2004, 17:32   #1
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
[Asm] Int10: dov'è l'errore?

Sto provando ad usare una modalità VGA nel mio kernel, ma usando questo codice Assembler:
Codice:
	__setmode:
	push	%ebp
	mov	(%esp),%ebp
		xorb	%ah,%ah
		movb	4(%ebp),%al				/* selected video mode */
		int	$0x10
	pop	%ebp
	ret
il computer mi si riavvia (o bochs si ferma, ovviamente...).

Dov'è l'errore?
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2004, 21:20   #2
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
risolto?
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 28-06-2004, 22:47   #3
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Re: [Asm] Int10: dov'è l'errore?

Quote:
Originariamente inviato da DanieleC88
Sto provando ad usare una modalità VGA nel mio kernel, ma usando questo codice Assembler:
Codice:
	__setmode:
	push	%ebp
	mov	(%esp),%ebp
		xorb	%ah,%ah
		movb	4(%ebp),%al				/* selected video mode */
		int	$0x10
	pop	%ebp
	ret
il computer mi si riavvia (o bochs si ferma, ovviamente...).

Dov'è l'errore?

Mmm vediamo. Una domanda , ma stai tentando di usare la C calling convention??

allora questo :

mov (%esp),%ebp

deve diventare :
mov %esp,%ebp

Altrimenti sposti in EBP il valore puntato da ESP , e non l'indirizzo contenuto in ESP .

Usando :

movb 4(%ebp),%al

Ti non ti stai muovendo 4 byte in basso nello stack come credi , ma invece ti stai muovendo in una locazione a caso nella memoria puntata dal valore contenuto nello stack top nel momento in cui hai fatto :

mov (%esp),%ebp

.

Poi vedi di essere sicuro che in AL finisca proprio il valore riferito al video mode che desideri (quello devi controllarlo tu , dato che qua hai postato solo una piccola porzione di codice ) .

Una domanda .


Che assemblatore usi? GAS ? La sintassi AT&T è un po' sgradevole da vedere

Ciao e in bocca al lupo!
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2004, 09:14   #4
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947
Re: [Asm] Int10: dov'è l'errore?


Ultima modifica di repne scasb : 03-02-2005 alle 16:55.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2004, 09:22   #5
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947

Ultima modifica di repne scasb : 03-02-2005 alle 16:55.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2004, 12:37   #6
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Sto programmando in C++, con tutte le limitazioni del caso, e compilo in assembly con GAS (as).

Cmq, ho capito che era veramente il fatto di lavorare in modalità protetta.. dannazione, scrivere un OS è difficile...

Esiste un modo per passare alla modalità reale quando voglio io? È conveniente passare continuamente da una modalità all'altra?
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!

Ultima modifica di DanieleC88 : 29-06-2004 alle 12:52.
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2004, 12:38   #7
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
int386(0x10,&regs,&regs);
Eh... fidati, mi piacerebbe, ma credo che GCC non me lo permetta...
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2004, 12:41   #8
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
mi ripeto :

prova a mettere

mov %esp,%ebp

al posto di :

mov (%esp),%ebp


Per quanto riguarda il problema del Protected Mode dato che tu stai facendo un kernel dubito che il tuo kernel sia già pronto per settare il Protected Mode , e credo anzi che funzioni ancora il Real Mode (che è la modalità base all' avvio del sistema) , per questo non ci dovrebbero essere particolari problemi (comunque potrei sbagliarmi)

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2004, 12:47   #9
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da DanieleC88
Sto programmando in C++, con tutte le limitazioni del caso, e compilo in assembly con GAS (as).

Per Luc@s: ehm, volevo dire 4(%esp), non (%esp)...

Cmq, ho capito che era veramente il fatto di lavorare in modalità protetta.. dannazione, scrivere un OS è difficile...

Esiste un modo per passare alla modalità reale quando voglio io? È conveniente passare continuamente da una modalità all'altra?

La modalità protetta è una modalità particolare , che deve essere setuppata all'avvio dal kernel del sistema operativo.

All' avvio il sistema parte in modalità reale , la modalità reale prevede al massimo un accesso diretto a 1 MB di memoria al massimo tramite indirizzi da 20bit divisi in 2 da 16 bit , ossia SEGMENTO e OFFSET . La modalità protetta del 386 d'altronde permette un accesso fino a 4GB di memoria tramite indirizzi a 32bit , ma necessita , appunto, che il sistema operativo prepari la modalità protetta prima che i programmi siano in grado di utilizzarla .

E' appunto per via di questa preparazione (che credo il tuo kernel ancora non implementi) che presumo che il tuo kernel giri ancora in modalità reale .

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2004, 12:58   #10
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da AnonimoVeneziano
mi ripeto :

prova a mettere

mov %esp,%ebp

al posto di :

mov (%esp),%ebp


Per quanto riguarda il problema del Protected Mode dato che tu stai facendo un kernel dubito che il tuo kernel sia già pronto per settare il Protected Mode , e credo anzi che funzioni ancora il Real Mode (che è la modalità base all' avvio del sistema) , per questo non ci dovrebbero essere particolari problemi (comunque potrei sbagliarmi)

Ciao
Infatti ti sbagli, il bootloader l'ho copiato e perciò è abbastanza buono: fa tutto lui, abilitazione dell'A20 e PMode. Per questo sto provando a tradurlo in GAS togliendo quello che non mi serve... (nel pmode ci voglio entrare solo *dopo* l'avvio, io...)

Per quanto riguarda quella linea, se noti l'ho già cancellata dal messaggio, visto che avevo sbagliato a scrivere, volevo dire che ora accedo direttamente ad %esp senza nessun altro mov.

P.S.: prima mi sembra tu abbia detto che lo stile AT&T è brutto. Forse si, ma è molto più preciso di quello Intel, a mio parere.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2004, 13:02   #11
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da AnonimoVeneziano
La modalità protetta è una modalità particolare , che deve essere setuppata all'avvio dal kernel del sistema operativo.

All' avvio il sistema parte in modalità reale , la modalità reale prevede al massimo un accesso diretto a 1 MB di memoria al massimo tramite indirizzi da 20bit divisi in 2 da 16 bit , ossia SEGMENTO e OFFSET . La modalità protetta del 386 d'altronde permette un accesso fino a 4GB di memoria tramite indirizzi a 32bit , ma necessita , appunto, che il sistema operativo prepari la modalità protetta prima che i programmi siano in grado di utilizzarla .

E' appunto per via di questa preparazione (che credo il tuo kernel ancora non implementi) che presumo che il tuo kernel giri ancora in modalità reale .

Ciao
Come ho già detto ad AnonimoVeneziano, fa tutto il bootloader, quindi sono già in protected mode.
Dannazione, mi sta venendo il mal di testa...

AVVISO: visto che le informazioni che vi sto dando sono un po' vaghe, se volete potete controllare il bootloader dalla discussione "Un kernel in C++". Presto, infatti, inserirò il codice completo del mio sistema. Naturalmente la parte cruciale è il bootloader, quindi il resto non sarà necessario controllarlo.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2004, 13:03   #12
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Ah, pensavo avevi scritto tu tutto , quindi pensavo che la modalità protetta non la implementassi .


La sintassi AT&T sinceramente non la vedo + precisa , quella INTEL a mio parere è + pulita , comunque sono gusti
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2004, 13:17   #13
repne scasb
Bannato
 
Iscritto dal: Feb 2003
Messaggi: 947

Ultima modifica di repne scasb : 03-02-2005 alle 16:53.
repne scasb è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2004, 13:28   #14
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Hmm, meglio evitare, allora.

a vedere dal tuo nome e dalla tua firma, credo che tu ne capisca di assembler, no?
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!

Ultima modifica di DanieleC88 : 29-06-2004 alle 13:30.
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2004, 13:35   #15
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da AnonimoVeneziano
comunque sono gusti
Giusto, i gusti so' gusti. Io sono uno GNU dalla testa ai piedi (ma non nel senso che sono un grosso animale peloso con zoccoli e corna). L'unica cosa che uso che non sia GNU è VIM. EMacs è troppo difficile da usare! Apri un file: C-x f. Salva un file: C-x s Chiudi un file: C-x c. È meglio usare semplicemente ":e", ":w" e ":q".

Scusate l'OT.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2004, 15:56   #16
Luc@s
Senior Member
 
L'Avatar di Luc@s
 
Iscritto dal: Apr 2002
Città: Vigevano(PV)
Messaggi: 2124
have a look there
__________________
Gnu/Linux User
Luc@s è offline   Rispondi citando il messaggio o parte di esso
Old 29-06-2004, 16:26   #17
AnonimoVeneziano
Senior Member
 
L'Avatar di AnonimoVeneziano
 
Iscritto dal: Aug 2001
Città: San Francisco, CA, USA
Messaggi: 13827
Quote:
Originariamente inviato da DanieleC88
Giusto, i gusti so' gusti. Io sono uno GNU dalla testa ai piedi (ma non nel senso che sono un grosso animale peloso con zoccoli e corna). L'unica cosa che uso che non sia GNU è VIM. EMacs è troppo difficile da usare! Apri un file: C-x f. Salva un file: C-x s Chiudi un file: C-x c. È meglio usare semplicemente ":e", ":w" e ":q".

Scusate l'OT.
IHMO GAS non è un assemblatore adatto per fare programmi direttamente in assembly . NASM è la risposta a questa esigenza , gira su molte piattaforme diverse , ha un controllo degli errori ottimo e supporta parecchi formati di output differenti .

GAS è stato progettato per assemblare l'assembly prodotto dai compilatori, perciò usato in concomitanza con GCC è ottimo (il tuo caso) ma va poco bene per creare progetti completamente in assembly , gira solo sotto UNIX , supporta solo OBJ come output e ha un controllo degli errori abbastanza infimo e criptico (si presume che un compilatore scriva assembly in maniera corretta, quindi perciò non c'è bisogno di un controllo degli errori specifico )

Questo è quello che penso

Ciao
__________________
GPU Compiler Engineer
AnonimoVeneziano è offline   Rispondi citando il messaggio o parte di esso
Old 30-06-2004, 23:10   #18
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Bel link, Luc@s, sicuramente più chiaro di Ralph Brown... Thanks!

AnonimoVeneziano: ho detto che preferisco GAS, ma è solo perchè quel che faccio io è molto limitato e GAS mi permette di farlo senza problemi. Certamente non disprezzo NASM (fino a poco tempo fa usavo solo quello, fai un po' tu), soprattutto visto che è veramente NetWide come dici tu: c'è dappertutto! E la sintassi Intel è supportata da parecchi compilatori, quindi a volte basta qualche ritocco. Ripeto: non dico che sia inferiore, anzi, ma in questo momento preferisco GAS.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!

Ultima modifica di DanieleC88 : 30-06-2004 alle 23:15.
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


CHUWI CoreBook Air alla prova: design premium, buona autonomia e qualche compromesso CHUWI CoreBook Air alla prova: design premium, b...
Roborock Saros 20: il robot preciso e molto sottile Roborock Saros 20: il robot preciso e molto sott...
ASUS ROG Kithara: quando HIFIMAN incontra il gaming con driver planari da 100mm ASUS ROG Kithara: quando HIFIMAN incontra il gam...
Roborock Qrevo Curv 2 Flow: ora lava con un rullo Roborock Qrevo Curv 2 Flow: ora lava con un rull...
Alpine A290 alla prova: un'auto bella che ti fa innamorare, con qualche limite Alpine A290 alla prova: un'auto bella che ti fa ...
Il portatile HP con 32GB di RAM, Core i5...
Mercato auto Italia a febbraio 2026, 157...
Si inizia con le offerte di Primavera Am...
Deumidificatori 10L/24h a meno di 100€ s...
Paramount+ e HBO Max verso la fusione: n...
Corning presenta Gorilla Glass Ceramic 3...
MOVA ViAX 250 e 300, i robot tagliaerba ...
iPhone 16e scende a 545€ su Amazon: chip...
Claude sfida tutti: arrivano memoria gra...
Cambia il minimo storico di uno dei robo...
Microsoft ritratta: Smart App Control ri...
Sam Altman ammette: 'Non dovevamo correr...
Tre datacenter AWS di Amazon hanno fatto...
Tineco in super offerta su Amazon: fino ...
POCO X8 Pro non ha più segreti: u...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 10:39.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v