Torna indietro   Hardware Upgrade Forum > Software > Programmazione

ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità
NUC 15 Pro e NUC 15 Pro+ sono i due nuovi mini-PC di casa ASUS pensati per uffici e piccole medie imprese. Compatti, potenti e pieni di porte per la massima flessibilità, le due proposte rispondono in pieno alle esigenze attuali e future grazie a una CPU con grafica integrata, accompagnata da una NPU per la gestione di alcuni compiti AI in locale.
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint
Dal palco di Proofpoint Protect 2025 emerge la strategia per estendere la protezione dagli utenti agli agenti IA con il lancio di Satori Agents, nuove soluzioni di governance dei dati e partnership rafforzate che ridisegnano il panorama della cybersecurity
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 22-04-2009, 21:29   #1
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
[assembly] architettura IA-32

siccome non trovo un piffero da nessuna parte vi chiedo: nei processori intel esistono registri specifici solo per le istruzioni e registri specifici solo per i dati ?

Ultima modifica di misterx : 22-04-2009 alle 21:56.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2009, 21:42   #2
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Francamente non capisco bene la domanda. Potresti cortesemente provare a formularla in maniera più chiara? Grazie.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 22-04-2009, 22:36   #3
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Francamente non capisco bene la domanda. Potresti cortesemente provare a formularla in maniera più chiara? Grazie.
a me sembra chiara a sufficienza
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 08:04   #4
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
In tal caso, mi spiace, ma non potrò fornirti nessuna risposta.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 09:59   #5
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
In tal caso, mi spiace, ma non potrò fornirti nessuna risposta.
un esperto di assembly saprebbe dirmi se codice e dati finisconon nello stesso registro oppure codice e dato finiscono in registri separati
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 10:13   #6
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da misterx Guarda i messaggi
a me sembra chiara a sufficienza
non lo era affatto


Quote:
Originariamente inviato da misterx Guarda i messaggi
un esperto di assembly saprebbe dirmi se codice e dati finisconon nello stesso registro oppure codice e dato finiscono in registri separati
non lo é neanche adesso, non ha senso: codice e dati stanno in memoria (come in tutte le macchine di Von Neumann) e i registri possono contenere qualunque cosa venga presa dalla memoria.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 10:18   #7
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originariamente inviato da 71104 Guarda i messaggi
non lo era affatto


non lo é neanche adesso, non ha senso: codice e dati stanno in memoria (come in tutte le macchine di Von Neumann) e i registri possono contenere qualunque cosa venga presa dalla memoria.
nell'architettura IA-32, a meno che non abbia inteso male io si legge che il registro CS = code segment (quindi ci dovrebbero andare solo istruzioni) ed il registro DS = data segment (qui ci vanno solo dati=parametri), tralasciando gli altri per non complicare le cose.

Il mio dubbio nasce dal fatto che se il PC (program counter) che tiene traccia del prossimo indirizzo da leggere fa mettere nel registro CS un dato qualsiasi e non una istruzione, come fa la cpu ad eseguirla ?

Dovrebbe avere un registro specifico dove eseguire le istruzioni con parametri presenti in un altro registro: sbaglio ?
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 11:07   #8
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da misterx Guarda i messaggi
nell'architettura IA-32, a meno che non abbia inteso male io si legge che il registro CS = code segment (quindi ci dovrebbero andare solo istruzioni) ed il registro DS = data segment (qui ci vanno solo dati=parametri), tralasciando gli altri per non complicare le cose.
No, il CS indica soltanto un segmento. Poi nel segmento è possibile memorizzare anche dati, oltre a istruzioni.

Lo stesso vale per qualunque altro registro, DS incluso.

Anzi, è possibile scrivere applicazioni per cui CS = DS = ES = SS, ad esempio.
Quote:
Il mio dubbio nasce dal fatto che se il PC (program counter) che tiene traccia del prossimo indirizzo da leggere fa mettere nel registro CS un dato qualsiasi e non una istruzione, come fa la cpu ad eseguirla ?

Dovrebbe avere un registro specifico dove eseguire le istruzioni con parametri presenti in un altro registro: sbaglio ?
C'è un po' di confusione. CS punta soltanto a un segmento. Poi in coppia con IP il processore compone l'indirizzo dell'istruzione da eseguire.

Se viene caricata un'istruzione non valida, viene generata un'eccezione coi processori moderni (con quelli vecchi no).

Questo se ho capito bene il tuo dubbio.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 11:26   #9
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
No, il CS indica soltanto un segmento. Poi nel segmento è possibile memorizzare anche dati, oltre a istruzioni.

Lo stesso vale per qualunque altro registro, DS incluso.

Anzi, è possibile scrivere applicazioni per cui CS = DS = ES = SS, ad esempio.

C'è un po' di confusione. CS punta soltanto a un segmento. Poi in coppia con IP il processore compone l'indirizzo dell'istruzione da eseguire.

Se viene caricata un'istruzione non valida, viene generata un'eccezione coi processori moderni (con quelli vecchi no).

Questo se ho capito bene il tuo dubbio.
ti correggo, ho molta confusione non poca

Mi sa che questa discussione non andava in questo spazio, pardon!
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 11:43   #10
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Diciamo che molti registri, come ad esempio i selettori di segmento, non vanno bene per essere usati per dati utente.
Intendo, se devo effettuare l'operazione 3+5, i valori 3 e 5 possono essere messi in tanti registri che potranno essere usati come sorgente per la somma, ma sicuramente non andro' a metterli in registri di tipo selettore.
Ci sono poi tanti registri, ciascuno con le sue caratteristiche, che NON potranno similmente servire allo scopo, come GDT, IDT.
Altri registri sono invece readonly, e quindi a maggior ragione non potranno essere usati.
Anche la parola di stato, i flag, sono in un registro, e anche questo non potra' essere usato per dati utente.
Ci sono poi registri che seppure possano essere usati per dati utente, non verranno usati allo scopo, come ESP e EBP, usati normalmente per operazioni sullo stack, e addirittura implicitamente coinvolti nelle operazioni assembly che operano appunto sullo stack.

"Registri solo per le istruzioni" e' un po' stiracchata come definizione, e mi sentirei di dire che solo il registro selettore CS e il registro del Program Counter EIP sono gli unici che hanno effettivamente a che fare SOLO con le istruzioni e che non vengono effettivamente usati per nient'altro.

Diciamo quindi che ci sono registri che possono essere usati per memorizzare/trattare dati, e registri che invece non si usano per questo, sebbene nessuno mi vieti di memorizzare 5 per la somma 5+7 nel registro TR3 o in DR2, il primo usato durante le procedure di self-test e il secondo che e' uno dei registri usati in modailita' DEBUG (step-by-step) del microprocessore, e il cui significato e' "Solleva un interrupt (ben specifico) quando il registro EIP (o forse l'inidirizzo fisico vero, non ricordo) arriva a valere il valore contenuto nel registro DRn"
Fatto salvo che poi questo registro non potro' usarlo come sorgente per una somma, e fatto salvo che non sia in modalita' DEBUG quando presumibilmente tale registro potrebbe servirmi e cambiarlo potrebbe dare effetti poco predicibili, nulla mi vieta di usarlo come "contenitore" temporaneo per dei dati.
Ma e' direi controproducente, dato che scrivere in tali registri e' normalmente addirittura piu' lento che scrivere in una cella di RAM.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 23-04-2009 alle 11:46.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 11:51   #11
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Già era confuso prima, adesso gli hai dato il colpo di grazia.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 11:55   #12
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
"Registri solo per le istruzioni" e' un po' stiracchata come definizione, e mi sentirei di dire che solo il registro selettore CS e il registro del Program Counter EIP sono gli unici che hanno effettivamente a che fare SOLO con le istruzioni e che non vengono effettivamente usati per nient'altro.
quindi i registri CS,DS,SS etc.. sono ad uso esclusivo della CPU ?

Ora ricordo che la memoria viene segmentata e ogni segmento contiene codiece/dati/stack, quandi tali registri si riferiscono a questi segmenti di memoria....se non ricordo male

Comunque, grazie 1000 per le vostro risposte

Ultima modifica di misterx : 23-04-2009 alle 12:11.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 11:56   #13
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Già era confuso prima, adesso gli hai dato il colpo di grazia.
Ho paura di si'.
Forse sarebbe utile studiare cosa e' un registro, cosa sono i dati, cosa sono le istruzioni e come fa una macchina ad eseguire le istruzioni.
Ovvero Von Neumann capitolo 1
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 11:56   #14
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Già era confuso prima, adesso gli hai dato il colpo di grazia.
tranquillo che recupero in fretta

ci vuole ben altro....dopo aver passato statistica, almeno questa (cpu, registri et similia) è informatica ed è divertente

cmq, ho trovato qualcosa http://it.wikipedia.org/wiki/Archite...istri_generali

Ultima modifica di misterx : 23-04-2009 alle 12:09.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 12:23   #15
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Ho paura di si'.
Forse sarebbe utile studiare cosa e' un registro, cosa sono i dati, cosa sono le istruzioni e come fa una macchina ad eseguire le istruzioni.
Ovvero Von Neumann capitolo 1
non devo entrare troppo nel dettaglio
Architetture l'ho dato qualche annetto fa!
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 12:46   #16
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Beh, allora andare avanti solo con definizioni non so se ti aiutera'.
Questo perche' per esempio non esistono registri utente che in alcun istante contengono "istruzioni". Non esistono quindi registri prettamente per le "istruzioni".
I registri che contengono le istruzioni che vengono eseguite in un determinato istante non sono registri accessibili dall'esterno del microprocessore, e nemmeno vengono comunemente chiamati registri.

Pensa poi al fatto che l'immagine binaria di un'istruzione e' di poco aiuto per il core del microprocessore Intel (e AMD), essendo che i Core2 sono microprogrammati, ovvero ogni singola istruzione macchina viene convertita in altre microistruzioni macchina. Ogni istruzione e' in realta' un programmino che fa uso di registri macchina non accessibili all'esterno.
Addirittura i Motorola (almeno fino al 68030) sono nanoprogrammati.
Ogni istruzione macchina dell'assembly dei motorola viene convertita in una o piu' microistruzioni. Ogni microistruzione e' a sua volta un nanoprogramma, composto da una o piu' nanoistruzioni. Nessuna delle celle di memoria interne del motorola che viene caricata in un determinato istante con una nanoistruzione del nanoprogramma e' accessibile all'esterno ne' in lettura ne' in scrittura.

Quindi puoi caricare se vuoi quello che e' il contenuto binario di un'istruzione in un registro utente, ma questo non servira' al processore per eseguirla, ne si puo' dire che possa servire per le istruzioni.

Parziale controesempio: WinZip e in generale programmi di compressione/decompressione.
Se io decomprimo un eseguibile ovviamente sto creando in memoria un bulk di dati che POI, forse, saranno un programma che verra' eseguito.
Durante l'esecuzione del decompressore (ma anche del compressore) quindi ci sara' un istante in cui qualcuno dei registri del microprocessore conterra' un'istruzione macchina. Ma per lui in quel momento non sono altro che dati agnostici. Per il decompressore e il microprocessore tali contenuti non sono altro che dati come tutti gli altri, e il fatto che possano essere in realta' istruzioni di un programma non aiutera' o non provochera' l'esecuzione di alcunche'. Che sia una immagine o un esegubilie, non si puo' dire che alcun registro in alcun istante contenga istruzioni per il microprocessore, ove per istruzione si intende qualcosa che viene caricato in qualunque registro per essere effettivamente "eseguito"
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 16:45   #17
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Beh, allora andare avanti solo con definizioni non so se ti aiutera'.
a noi al corso di SO hanno suggerito di leggere le prime 10 pagine dei primi 6 capitoli del manuale di intel

"Intel® 64 and IA-32 Architectures
Software Developer’s Manual
Volume 3A:
System Programming Guide, Part 1"

e lasciato tutto il resto per chi desidera approfondire, ovviamente tempo permettendo.

Lo scopo del corso di SO che sto seguendo io è capire come lavora/ragiona minix su piattaforma intel, per questo motivo mi servono i rudimenti di come lavora intel. E' già impegnativo studiare i vari algoritmi di scheduling e quant'altro che non ci sarebbe modo di approfondire più di tanto, forse più in là.

Allo stato attuale mi interessa capire dove e come scrivo nella cpu attraverso l'assembly: scrivere mov eax,xyz opure push 1 senza capire dove finiscono i dati non mi è sufficiente.
Siccome nel corso si citano differenti registri della CPU è interessante capire come sono fatti e come lavorano ma senza entrare nel dettaglio di come lavora l'ALU, MAR etc...

Comunque grazie infinite per i vostri interventi

Ultima modifica di misterx : 23-04-2009 alle 16:49.
misterx è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 17:42   #18
Tesinevb
Member
 
Iscritto dal: Dec 2005
Messaggi: 44
Quote:
Originariamente inviato da misterx Guarda i messaggi
a noi al corso di SO hanno suggerito di leggere le prime 10 pagine dei primi 6 capitoli del manuale di intel

"Intel® 64 and IA-32 Architectures
Software Developer’s Manual
Volume 3A:
System Programming Guide, Part 1"

e lasciato tutto il resto per chi desidera approfondire, ovviamente tempo permettendo.

Lo scopo del corso di SO che sto seguendo io è capire come lavora/ragiona minix su piattaforma intel, per questo motivo mi servono i rudimenti di come lavora intel. E' già impegnativo studiare i vari algoritmi di scheduling e quant'altro che non ci sarebbe modo di approfondire più di tanto, forse più in là.

Allo stato attuale mi interessa capire dove e come scrivo nella cpu attraverso l'assembly: scrivere mov eax,xyz opure push 1 senza capire dove finiscono i dati non mi è sufficiente.
Siccome nel corso si citano differenti registri della CPU è interessante capire come sono fatti e come lavorano ma senza entrare nel dettaglio di come lavora l'ALU, MAR etc...

Comunque grazie infinite per i vostri interventi
Vai quì:
http://xoomer.virgilio.it/ramsoft/
Tesinevb è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 17:51   #19
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da Tesinevb Guarda i messaggi
Mitica fonte
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 23-04-2009, 18:42   #20
misterx
Senior Member
 
Iscritto dal: Apr 2001
Città: Milano
Messaggi: 3736
Quote:
Originariamente inviato da Tesinevb Guarda i messaggi

lo stò leggendo, grazie

Per me è stato fondamentale il capitolo 9

Ultima modifica di misterx : 23-04-2009 alle 19:14.
misterx è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondono completezza e duttilità ASUS NUC 15 Pro e NUC 15 Pro+, mini PC che fondo...
Cybersecurity: email, utenti e agenti IA, la nuova visione di Proofpoint Cybersecurity: email, utenti e agenti IA, la nuo...
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
30 anni di PlayStation da indossare: arr...
Amazon lancia gli Echo più potent...
Amazon rinnova la gamma Fire TV: ecco le...
Ring lancia le sue prime videocamere con...
Blink amplia la gamma di videocamere di ...
Jaguar Land Rover riprende (gradualmente...
HONOR inaugura il primo ALPHA Flagship S...
Yamaha: ecco il brevetto del 'finto moto...
'Console obsoleta e utenti ingannati': u...
Stop al ransomware su Google Drive, graz...
L'IA è la nuova interfaccia utent...
Battlefield 6: confermata la dimensione ...
Windows 11 porta il Wi-Fi 7 alle aziende...
Logitech MX Master 4 subito disponibile ...
'Nonna Skyrim' dice addio all'RPG di Bet...
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: 17:31.


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