2010-01-11 4 views
7

Je suis juste en train de toucher la surface du jeu d'instructions x86 après une longue période de programmation de haut niveau. Cela fait environ 20 ans que j'ai eu ma première lecture sur la programmation de l'assemblage x86 et de mes googlings je suis juste perdu avec la myriade de références de jeux d'instructions; de ceux qui mélangent les nouvelles générations de processeurs (286, 386, 486 ...) à d'autres qui ajoutent des instructions x86 plus récentes. Sans oublier les variations AMD. Depuis que j'ai l'intention de construire un chargeur de démarrage, mon premier réflexe a été d'être entièrement conforme à la norme 'x86' mais je ne peux pas savoir où il est dans le temps ou même s'il existe n'importe où.x86 instruction set roadmap

Même la documentation Intel semble suivre le même chemin et comme un autre a dit, «nous avons besoin d'une normalisation d'ensemble d'instructions x86, l'évolution des opcodes est chaotique».

Ce n'est pas mon idée de tenir la bannière de normalisation. Je veux juste voir la route et comprendre où est l'endroit sûr pour marcher. Si quelqu'un pouvait m'aider j'apprécierais beaucoup!

Répondre

5

Historiquement, x86 a été très rétrocompatible. x86-64 a jeté des instructions très anciennes (comme les instructions BCD) mais il est peu probable que ce genre de changements se reproduise (du moins jusqu'à ce que quelque chose d'aussi grand que la transition d'espace d'adresse 64 bits se produise). Si vous voulez vous assurer que votre code fonctionne sur pratiquement tous les processeurs x86, respectez le jeu d'instructions 386 (si votre code est 32 bits) ou le jeu d'instructions x86-64 (s'il s'agit d'un jeu 64 bits).

+1

J'ai remarqué une tendance récente à construire des noyaux Linux dans diverses distributions pour 586 (Pentium) ou mieux ces jours-ci ... bien qu'ils ne peuvent toujours pas par défaut aux noyaux 686 (Pentium II/III/IV/Pro) en raison des différences entre ceux-ci et les instructions k7 (AMD Athlon). – Powerlord

+0

R. Bemrose: C'est une façon logique d'y aller par la suite. IMO, la beauté de x86-64 n'est pas seulement en 64 bits, mais en établissant un minimum raisonnable pour les instructions supportées par les processeurs (par exemple SSE) –

+0

https://fedoraproject.org/wiki/Features/F12X86Support Fedora 12 construit maintenant pour i686 , abandonnant le support de nombreux processeurs plus anciens. Ma pauvre Via C3 ... :-( – ephemient

1

Le chargeur d'amorçage s'exécute en mode réel 16 bits (bien que vous ayez accès aux registres 32 bits via le préfixe de taille d'opérande). Obtenez une référence d'instruction 386, et vous serez en sécurité.