(Je me suis trompé en fait sur la taille. C'était 36 bits,
évidemment. Mais quelle était alors la machine à 24
bits?)
|> (Toujours de mémoire, donc sujet à erreur, et je
|> répète que je n'ai pas programmé cette machine en C,
|> donc ça diminue d'autant la qualité de mes souvenirs
|> sur le C)
Moi, je n'en ai même jamais eu sous la main. Mes souvenirs
ne concernent que ce que l'ai lu. Il y a peu de temps,
d'ailleurs.
J'imagine qu'un char* aurait eu exactement le format d'un « byte
pointer ».
Note que si je comprends la documentation à la site
ci-dessus correctement, la position était bien sur les
poids faibles du mot. Or, je me rappelle bien avoir parlé
avec quelqu'un qui m'a racconté d'une architecture à peu
près semblable, mais avec la position aux poids forts. De
façon que quand tu incrémentais un pointeur de byte la
première fois, c'était bien dans les poids forts où
l'incrémentation avait lieu, et que (unsigned)p >
(unsigned)(p+1).
|> Vous pensez que c'est compliqué? Je n'ai pas abordé le
|> sujet de l'adressage étendu (dont je n'ai que des
|> vagues souvenirs) permettant des adresses sur plus de
|> 18 bits.
Il y en avait sur les PDP-10 aussi.
Je m'en souviens bien sur les PDP-11 (et sur prèsque
toutes les machines de 16 bits).
Mais en fait, les IA-32 ont encore quelque chose de
semblable, qui sert pour permettre des adresses de plus de
32 bits. Et même si Windows et Linux préfère en ignorer
l'existance, je m'en suis déjà servi.
En fait, on pourrait dire que sur un IBM 1401, les chars
équivalaient au mot. Mais seulement parce que le seul «
mot » sur ces machines n'avait que six (ou sept, ou huit,
selon ce que tu comptais) bits. Les « nombres » sur la
machine était décimaux, normalement non-packé, sur une
suite de « mots », avec un flag de fin. Il n'y avait aucun
arithmétique binaire.
(Je me suis trompé en fait sur la taille. C'était 36 bits,
évidemment. Mais quelle était alors la machine à 24
bits?)
|> (Toujours de mémoire, donc sujet à erreur, et je
|> répète que je n'ai pas programmé cette machine en C,
|> donc ça diminue d'autant la qualité de mes souvenirs
|> sur le C)
Moi, je n'en ai même jamais eu sous la main. Mes souvenirs
ne concernent que ce que l'ai lu. Il y a peu de temps,
d'ailleurs.
J'imagine qu'un char* aurait eu exactement le format d'un « byte
pointer ».
Note que si je comprends la documentation à la site
ci-dessus correctement, la position était bien sur les
poids faibles du mot. Or, je me rappelle bien avoir parlé
avec quelqu'un qui m'a racconté d'une architecture à peu
près semblable, mais avec la position aux poids forts. De
façon que quand tu incrémentais un pointeur de byte la
première fois, c'était bien dans les poids forts où
l'incrémentation avait lieu, et que (unsigned)p >
(unsigned)(p+1).
|> Vous pensez que c'est compliqué? Je n'ai pas abordé le
|> sujet de l'adressage étendu (dont je n'ai que des
|> vagues souvenirs) permettant des adresses sur plus de
|> 18 bits.
Il y en avait sur les PDP-10 aussi.
Je m'en souviens bien sur les PDP-11 (et sur prèsque
toutes les machines de 16 bits).
Mais en fait, les IA-32 ont encore quelque chose de
semblable, qui sert pour permettre des adresses de plus de
32 bits. Et même si Windows et Linux préfère en ignorer
l'existance, je m'en suis déjà servi.
En fait, on pourrait dire que sur un IBM 1401, les chars
équivalaient au mot. Mais seulement parce que le seul «
mot » sur ces machines n'avait que six (ou sept, ou huit,
selon ce que tu comptais) bits. Les « nombres » sur la
machine était décimaux, normalement non-packé, sur une
suite de « mots », avec un flag de fin. Il n'y avait aucun
arithmétique binaire.
(Je me suis trompé en fait sur la taille. C'était 36 bits,
évidemment. Mais quelle était alors la machine à 24
bits?)
|> (Toujours de mémoire, donc sujet à erreur, et je
|> répète que je n'ai pas programmé cette machine en C,
|> donc ça diminue d'autant la qualité de mes souvenirs
|> sur le C)
Moi, je n'en ai même jamais eu sous la main. Mes souvenirs
ne concernent que ce que l'ai lu. Il y a peu de temps,
d'ailleurs.
J'imagine qu'un char* aurait eu exactement le format d'un « byte
pointer ».
Note que si je comprends la documentation à la site
ci-dessus correctement, la position était bien sur les
poids faibles du mot. Or, je me rappelle bien avoir parlé
avec quelqu'un qui m'a racconté d'une architecture à peu
près semblable, mais avec la position aux poids forts. De
façon que quand tu incrémentais un pointeur de byte la
première fois, c'était bien dans les poids forts où
l'incrémentation avait lieu, et que (unsigned)p >
(unsigned)(p+1).
|> Vous pensez que c'est compliqué? Je n'ai pas abordé le
|> sujet de l'adressage étendu (dont je n'ai que des
|> vagues souvenirs) permettant des adresses sur plus de
|> 18 bits.
Il y en avait sur les PDP-10 aussi.
Je m'en souviens bien sur les PDP-11 (et sur prèsque
toutes les machines de 16 bits).
Mais en fait, les IA-32 ont encore quelque chose de
semblable, qui sert pour permettre des adresses de plus de
32 bits. Et même si Windows et Linux préfère en ignorer
l'existance, je m'en suis déjà servi.
En fait, on pourrait dire que sur un IBM 1401, les chars
équivalaient au mot. Mais seulement parce que le seul «
mot » sur ces machines n'avait que six (ou sept, ou huit,
selon ce que tu comptais) bits. Les « nombres » sur la
machine était décimaux, normalement non-packé, sur une
suite de « mots », avec un flag de fin. Il n'y avait aucun
arithmétique binaire.
À peu près. Mais apparamment, la possibilité d'extraire un champs de
bits (indépendamment de son utilisation pour des chars) était assez
intéressante pour qu'ils l'implémentent aussi sur la VAX.
À peu près. Mais apparamment, la possibilité d'extraire un champs de
bits (indépendamment de son utilisation pour des chars) était assez
intéressante pour qu'ils l'implémentent aussi sur la VAX.
À peu près. Mais apparamment, la possibilité d'extraire un champs de
bits (indépendamment de son utilisation pour des chars) était assez
intéressante pour qu'ils l'implémentent aussi sur la VAX.
Désolé, mais je n'arrive jamais à me souvenir du sens de big/little endian.
Alors je parle en opposition Intel/Motorola...
Bienvenu au club! Si quelqu'un a un moyen mnémotechnique, qu'il le
dise!
Peut-être en fouillant là :)
Désolé, mais je n'arrive jamais à me souvenir du sens de big/little endian.
Alors je parle en opposition Intel/Motorola...
Bienvenu au club! Si quelqu'un a un moyen mnémotechnique, qu'il le
dise!
Peut-être en fouillant là :)
Désolé, mais je n'arrive jamais à me souvenir du sens de big/little endian.
Alors je parle en opposition Intel/Motorola...
Bienvenu au club! Si quelqu'un a un moyen mnémotechnique, qu'il le
dise!
Peut-être en fouillant là :)
|> Jamais utilisé ça, mais j'avais cru comprendre que c'était
|> simplement le mapping adresse virtuelle -> adresse physique
|> qui permettait d'avoir plus de 32 bits d'adresse physique et
|> que l'espace mémoire virtuel était bien limité à 32 bits.
D'après mes souvenirs, il y avait un bit de sélection dans un mot du
descripteur de sélecteur qui jouait là-dessus, et qu'il y avait bien
une option qui permettait 48 bits d'adresses dans la mémoire
virtuelle. Mais j'avoue que ce n'est que des souvenirs, qui datent
en plus, étant donné que je n'ai plus travaillé sur Intel depuis
1988.
|> Jamais utilisé ça, mais j'avais cru comprendre que c'était
|> simplement le mapping adresse virtuelle -> adresse physique
|> qui permettait d'avoir plus de 32 bits d'adresse physique et
|> que l'espace mémoire virtuel était bien limité à 32 bits.
D'après mes souvenirs, il y avait un bit de sélection dans un mot du
descripteur de sélecteur qui jouait là-dessus, et qu'il y avait bien
une option qui permettait 48 bits d'adresses dans la mémoire
virtuelle. Mais j'avoue que ce n'est que des souvenirs, qui datent
en plus, étant donné que je n'ai plus travaillé sur Intel depuis
1988.
|> Jamais utilisé ça, mais j'avais cru comprendre que c'était
|> simplement le mapping adresse virtuelle -> adresse physique
|> qui permettait d'avoir plus de 32 bits d'adresse physique et
|> que l'espace mémoire virtuel était bien limité à 32 bits.
D'après mes souvenirs, il y avait un bit de sélection dans un mot du
descripteur de sélecteur qui jouait là-dessus, et qu'il y avait bien
une option qui permettait 48 bits d'adresses dans la mémoire
virtuelle. Mais j'avoue que ce n'est que des souvenirs, qui datent
en plus, étant donné que je n'ai plus travaillé sur Intel depuis
1988.
Pierre Maurette writes:
|> De même pour le DWORD 0x12345678, écrit comme un DWORD:
|> little endian: 78 56 34 12
|> big endian: 12 34 56 78
Ou 56 78 12 34, comme c'était le cas sur certains processeurs ou avec
certains compilateurs (sur 8086, par exemple).
Pierre Maurette <maurettepierre@wanadoo.fr> writes:
|> De même pour le DWORD 0x12345678, écrit comme un DWORD:
|> little endian: 78 56 34 12
|> big endian: 12 34 56 78
Ou 56 78 12 34, comme c'était le cas sur certains processeurs ou avec
certains compilateurs (sur 8086, par exemple).
Pierre Maurette writes:
|> De même pour le DWORD 0x12345678, écrit comme un DWORD:
|> little endian: 78 56 34 12
|> big endian: 12 34 56 78
Ou 56 78 12 34, comme c'était le cas sur certains processeurs ou avec
certains compilateurs (sur 8086, par exemple).