2010-01-11 9 views
7

Ich berühre nur die Oberfläche des x86 Befehlssatzes nach einer langen Zeit der Hochprogrammierung. Es ist ungefähr 20 Jahre her, dass ich meine erste Version der x86-Assemblerprogrammierung gelesen habe und aus meinen Googlings bin ich gerade durch die unzähligen Instruktionssätze verschwunden; von denen, die neue Generationen von Prozessoren (286, 386, 486 ...) mit anderen mischen, die neuere x86-Anweisungen hinzufügen. Ganz zu schweigen von den AMD-Varianten.x86 Befehlssatz Roadmap

Da ich plane, einen Bootloader zu bauen, war mein erster Gedanke, vollständig mit 'Standard x86' konform zu sein, aber ich kann nicht herausfinden, wo es ist oder ob es irgendwo existiert.

Sogar die Intel-Dokumentation scheint dem gleichen Pfad zu folgen und wie ein anderer sagte: "Wir brauchen eine x86-Befehlssatz-Standardisierung, die Evolution von Opcodes ist chaotisch".

Es ist nicht meine Idee, das Standardisierungsbanner zu halten. Ich will nur die Straße sehen und verstehen, wo der sichere Ort zum Laufen ist. Wenn jemand helfen könnte, würde ich mich sehr freuen!

Antwort

5

Historisch war x86 sehr abwärtskompatibel. x86-64 hat einige sehr alte Anweisungen (wie BCD-Anweisungen) weggeworfen, aber es ist unwahrscheinlich, dass diese Art von Änderungen wieder passieren wird (zumindest nicht bis etwas Riesiges wie 64-Bit-Adressraumübergang passiert).

Wenn Sie sicherstellen möchten, dass Ihr Code auf praktisch allen x86-Prozessoren funktioniert, halten Sie sich an den 386-Befehlssatz (wenn Ihr Code 32-Bit ist) oder frühen x86-64-Befehlssatz (wenn es 64-Bit ist).

+1

Ich habe einen aktuellen Trend bemerkt, Linux-Kernel in verschiedenen Distributionen für 586 (Pentium) oder besser in diesen Tagen zu bauen ... obwohl sie immer noch nicht auf die 686 (Pentium II/III/IV/Pro) -Kernels zurückgreifen können wegen der Unterschiede zwischen diesen und den k7 (AMD Athlon) Anweisungen. – Powerlord

+0

R. Bemrose: Das ist ein logischer Weg zu gehen. IMO, die Schönheit von x86-64 ist nicht nur 64 Bit, sondern ein vernünftiges Minimum für Anweisungen, die von den Prozessoren (zB SSE) unterstützt werden. –

+0

https://fedoraproject.org/wiki/Features/F12X86Support Fedora 12 baut jetzt für i686 , Unterstützung für viele ältere Prozessoren da draußen fallen lassen. Meine arme Via C3 ... :-( – ephemient

1

Der Bootloader wird im 16-Bit-Realmodus ausgeführt (obwohl Sie über das Operandengrößenpräfix Zugriff auf 32-Bit-Register haben). Holen Sie sich eine 386-Befehlsreferenz, und Sie werden in Sicherheit sein.