Einzelnen Beitrag anzeigen

Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#6

AW: Erklärung der Flags und CMP instruction in Assembler

  Alt 12. Apr 2018, 12:27
Falls du ein einfach zu parsendes Dokument suchst, kannst du gerne mal hier vorbeischauen:
https://github.com/zyantific/zydis-d...tructions.json

Die Datenbasis ist anhand der Intel Dokumentation, den Datafiles von Intel XED, den Tabellen von LLVM und der Website "sandpile.org" zusammengestellt und sollte - bis auf die ganz neuen Instructions aus der "Tremont" Microarchitektur (Edit: Jetzt auch vorhanden, im Future Branch) - sämtliche momentan verfügbaren ISA-Extensions beinhalten. Das JSON-File dient als Input für einen Generator, der dann die Decoder Tabellen für unseren Zydis Disassembler erzeugt; wird von uns also auch regelmäßig auf den neusten Stand gebracht.

Edit:
Dass CMP eine Subtraktion durchführt, wurde ja schon erwähnt. Dadurch impliziert werden die Flags CF, OF, SF, ZF, AF und PF entsprechend der Regeln für Subtraktion gesetzt. Also CF, wenn es einen Übertrag gab; OF, wenn ein Overflow stattgefunden hat, etc. Im Intel SDM gibt es unter dem Stichwort "Jcc — Jump if Condition Is Met" eine Seite mit allen konditionalen Sprüngen. Hier steht an der Seite auch immer dabei, welches Flag auf welche Bedingung geprüft wird. Z.B. im Falle von JNE wäre das "Jump short if not equal (ZF=0)" (Ergebnis der Subtraktion über CMP ergab nicht 0 -> also waren die verglichenen nicht Werte identisch -> zero-flag wurde nicht gesetzt (=0)).
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)

Geändert von Zacherl (12. Apr 2018 um 14:00 Uhr)
  Mit Zitat antworten Zitat