Newsgroup: it.comp.lang.c
Titolo: word 16 - 32 bit

ciao
io su tali argomenti sono del tutto ignorante :(
e prima di proseguire nell'apprendimento del C vorrei colmare queste
lacune....
1)ho letto dei vari tipi di dato e che a seconda del processore un int puo'
valere 16 o 32 bit, in tal caso se 16 allora dire short o int equivale alla
stessa cosa, come per casi in cui int sia 32 bit e quindi long e int si
equivarrebbero, ma per sapere se il mio processore pIII intel alloca 16 o 32
bit agli integer come faccio?
Utilizzo sizeof()?
2)il tipo stringa non esiste e una stringa "ciao \n" e' un array di char
quindi ogni carattere occupa una locazione contigua ed e' possibile puntare
ad ogni singolo carattere, volevo sapere se anche lo spazio "" in tale
stringa viene trattato come un carattere e \n (new line)come viene trattato?
Come intero piccolo o come 2 caratteri \ e n?
3)segment e offset, offset indica lo spostamento tra una locazione di
memoria ed un punto di partenza, e segment?
grazie!

 memoria ed un punto di partenza, e segment?
Il punto di partenza.
HTH.
C:\>iao Angelo
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Come intero piccolo o come 2 caratteri \ e n? 
Lo slash indica una sequenza di escape. \n è una sequenza che rappresenta 
un unico carattere. 
-- 
In silenzio anche un idiota sembra intelligente. Ma non c'è problema,
l'idiota vuol sempre dire la sua.

 Non a seconda del processore, ma a seconda del sistema operativo
Il sistema operativo c'entra poco e' una _quasi_ esclusiva del compilatore.
Un vecchio compilatore per DOS su Windows XP produrra' istruzioni che
opereranno su interi a 16 bit.
Ma esistono compilatori che sono in grado di produrre codice a 32 bit anche
per DOS: con questi l'intero avra' 32 bit.


 anche per DOS: con questi l'intero avra' 32 bit.
Anche in questo caso i programmi vengono eseguiti caricando di facto 
un'altro ambiente operativo (dosext).
-- 
---


un'altro ambiente operativo (dosext).
L'extender e' utilizzato soltanto per avere a disposizione funzioni
per la gestione della memoria (XMS/DPMI) e per il protected mode.
Tra l'altro molto spesso questi extender utilizzano codice a 16 bit.
Nulla vieta di usare codice a 32 bit senza bisogno di usare un
extender.
ciao, acc.   
a...@libero.it

 extender.
Ne sono certo, DOS si lascia liberamente incaprettare.
Bisognerebbe vedere se su altri sistemi operativi che si possono dire tali 
č possibile fare altrettanto...
-- 
---
In silenzio anche un idiota sembra intelligente. Ma non c'č problema,


è possibile fare altrettanto...
Credo che tu confonda i termini "protected mode" e "codice a 32 bit",
non c'e' alcun legame tra l'uno e l'altro, as es. i 286 (16 bit)
supportano il protected mode.
Al limite un SO serio puo' intervenire se il programma tenta di
accedere a posizioni off limit o se tenta di cambiare il proprio
livello di privilegio; non puo' in alcun modo verificare se il codice
e' a 16 o 32 bit, lo esegue e basta
ciao, acc.   
a...@libero.it

 Credo che tu confonda i termini "protected mode" e "codice a 32 bit"
no.
Ma siamo troppo ot, taglio corto.
-- 
---
In silenzio anche un idiota sembra intelligente. Ma non c'è problema,


 l'idiota vuol sempre dire la sua.
La  tua  firma e'  inquetante:  e' per  caso  un  deterrente ad  avere
risposte? :-)
C:\>iao Angelo
[1] In realta' nemmeno questo e' un limite: se un processore non e' in
    grado di  manipolare in blocco una certa quantita', la si spezza o
    si  fanno porcate  con gli  shift: ma  non  stiamo  a spaccare  il
    capello in quattro.

valere 16 o 32 bit, in tal caso se 16 allora dire short o
dipende dal tipo del processore principalmente
e poi (relativamente) dal software che si utilizza
per esempio con un processore Pentium e Borland C
word==16bit
int==long==32bit
penso che con lo stesso processore si potrebbe avere (meno
efficentemente) int 16 bit o int 64 bit

efficentemente) int 16 bit o int 64 bit
Niet, niet, niet !!!
Dipende esclusivamente dal compilatore, se usi un compilatore Borland
a 16 bit, int sara' a 16 bit e non a 32, e questo indipendentemente
dalla macchina e dal SO dove girera' il programma.
L'unica relazione con hardware e sistema operativo e' data dal fatto
che se la macchina monta un processore a 32 bit, e il sistema
operativo gestisce normalmente questo tipo di dato, allora chi
sviluppera' un compilatore per quell'ambiente probabilmente scegliera'
un int a 32 bit.  Ma se dovesse decidere per un int a 16 bit, allora
non c'e' hardware o sistema operativo che possa cambiare la
situazione, i 16 bit restano, l'unica e' cambiare il compilatore.
ciao, acc.   
a...@libero.it

situazione, i 16 bit restano, l'unica e' cambiare il compilatore.
può essere che dico cose non vere
ma vedo il compilatore progettato per un sistema operativo e per una
classe di cpu; Es. borland 5.5 C: os >=wnd95  +  >=386
in altro sistema operativo (es: dos) tale compilatore avrebbe dei
problemi (nel caso che utilizza tutta la cpu (programma che utilizza
registri a 32 bit) ) o solo perchè i programmi che produce non sono
utilizzabile in tale Sistema Operativo ma in altri.
In altro hardware si dovrebbe ritradure il compilatore (si dice
"porting"?)

 un int a 32 bit.
Veramente la scelta, in questo caso, bypassa del tutto il sistema operativo.
E' il compilatore ad essere scritto per un determinato sistema operativo, ma
il codice che esso produce e' indipendente dal sistema operativo, e'
strettamente legato alla macchina.
L'unica compatibilita' che ci deve essere, nel codice eseguibile, riguarda
le strutture di controllo che servono a caricare l'eseguibile in memoria da
parte del s.o.
--------------------------------
Inviato via 
http://usenet.libero.it

utilizzabile in tale Sistema Operativo ma in altri.
Ok, piu' o meno le cose stanno cosi'.
Quello che mi premeva sottolineare e' che il fatto che un compilatore
gira su una certa macchina non significa automaticamente che sia fatto
su misura per quella macchina.
Per esempio un vecchio compilatore a 16 bit per MS-DOS, probabilmente
girera' anche su di un Pentium 3 con windows 98, ma il codice prodotto
sara' ancora a 16 bit.
ciao, acc.   
a...@libero.it

Veramente la scelta, in questo caso, bypassa del tutto il sistema operativo.
Non sempre, sicuramente l'architettura hardware e' cio' che condiziona
maggiormente, pero' a volte puo' anche essere tenuto in considerazione
il fatto che che la piattaforma in questione usa un sistema operativo
che utilizza una certa dimensione per gli interi, oppure che il
sistema, naturalmente si tratta di una scelta facoltativa.
ciao, acc.   
a...@libero.it

 che utilizza una certa dimensione per gli interi
No.
Non c'entra proprio la dimensione degli interi usata dal sistema operativo.
Tra l'altro il sistema operativo che lavora su una piattaforma a 32 bit,
presumibilmente utilizzera' interi grandi quanto la parola macchina, cosi'
come uno che lavora su una piattaforma a 64, ecc... ecc..., quindi il
problema non si pone. L'adozione di una lunghezza o meno per gli interi, da
parte del compilatore, nella produzione del codice, e' dipendente SOLO dalla
piattaforma.
