Ich würde gerne wissen, wie man effiziente Jump-Tabellen für x64-Prozessoren, entweder in C, C++ oder Assembly schreiben. Die Eingabe ist im Voraus bekannt, aber algorithmisch nicht vorherzusagen. Angenommen, ich kann im Eingangsstrom so weit voraussehen, wie ich möchte, kann ich der CPU dynamisch mitteilen, welche Adresse der nächste Zweig sein wird?Wie kann ich ein Verzweigungsziel dynamisch an eine x64-CPU anhängen?
Im Wesentlichen möchte ich den Branch Target Buffer programmatisch aktualisieren. Aber ich würde mich mit allem zufrieden geben, was es mir erlaubt, die Pipeline in Fällen zu leeren, in denen der Programmierer im Voraus weiß, wohin der nächste Zweig geht, indem er die Daten betrachtet, aber der Prozessor kann dies nicht aus vergangenen Mustern bestimmen.
Aus dieser Erkenntnis heraus eine sehr spezifische Frage ist, und dass ich wahrscheinlich versagt haben, es richtig zu vermitteln, hier sind ein paar alternativen Phrasierungen:
Gibt es eine x64 entspricht hbr
Hinweis für Niederlassung auf dem Cell-Prozessor ?
Hilft es jemals, eine Assembly cmp
früher als ihre bedingte Verzweigung zu verschieben, wie es bei Itanium der Fall war?
Basiert das vorhergesagte Ziel eines indirekten Sprungs jemals auf einem Registerwert anstatt auf der letzten verwendeten Adresse?
Danke!