Il semble que votre question serait les différences entre les E/S mappées en mémoire et les E/S mappées en port. Il existe normalement deux méthodes pour que le processeur connecte les périphériques externes, qui sont mappés en mémoire ou les E/S mappées sur le port.
mémoire mappée E/S
mémoire mappée E/S utilise le même espace d'adresses pour répondre à la fois la mémoire et les périphériques d'E/S. Ainsi, lorsqu'une adresse est accédée par la CPU, elle peut faire référence à une partie de la RAM physique, mais elle peut également se référer à la mémoire du périphérique d'E/S (basé sur Memory-mapped I/O on Wiki).
La valeur 0x16D34
dans votre premier exemple serait la mémoire virtuelle et serait mappée à la mémoire physique. Le périphérique d'E/S renvoie également la même mémoire physique pour permettre l'accès à partir du processeur.
Port mappée E/S
Port mappée E/S utilise une procédure distincte, l'espace d'adressage dédié et est accessible via un ensemble dédié d'instructions du microprocesseur. Pour 0x3F8
dans votre deuxième exemple, il s'agit de l'adresse de la propre adresse spécifique aux périphériques de mémoire et d'E/S. Ce n'est pas l'adresse partagée entre la mémoire et les périphériques d'E/S comme nous l'avons mentionné précédemment dans les E/S mappées en mémoire.Vous pouvez obtenir plus de détails dans Memory-mapped IO vs Port-mapped IO
Cela ressemble à x86 et pas un périphérique mappé en mémoire du tout. Cette question particulière ne vous aidera pas à comprendre. Vous avez besoin d'obtenir l'image entière. Un bon livre sur l'architecture PC serait une bonne lecture. Et qu'est-ce que vous demandez? mémoire virtuelle/mappage de mémoire ** ou ** pilotes de périphérique? Ce sont deux approches très différentes! – Olaf
@Olaf Ce qui ne ressemble pas à un périphérique, vous voulez dire l'adresse '0x16D34'? c'est juste un exemple que j'ai donné, il ne pointe à rien. – Steve
Les ports d'E/S ne sont pas des adresses mémoire, vous ne pouvez donc pas demander s'ils sont physiques ou virtuels. – harold