Tool: Welche CPU-Instruktionssätze enthält die Test-Datei

Helle53

Lt. Commander
Mitglied seit
16.12.2011
Beiträge
122
Renomée
13
Nachdem ich im y-cruncher-Thread die verwendeten XOP-Instruktionen mühsam von Hand ermittelt habe, musste was geschehen. Also habe ich meinen alten Dis-Assembler wieder vorgekramt, als Dis-Assembler-Engine NDISASM (Lizenz beachten!) eingebunden (die ganzen neuen Instruktionssätze wollte ich mir nicht antun) und das Ganze umgemodelt. Das Ergebnis gibt es hier:
http://www.mdcc-fun.de/k.helbing/Dis-Assembler/NASM/DisAsm.zip
Es ist praktisch ein erweiterter Dis-Assembler, aber erstmal nur für EXE-Files. "Normale" x86-Instruktionen werden nicht weiter hervorgehoben, Anderes wird jeweils farblich dargestellt. Angezeigt wird die Anzahl der gefundenen Instruktionen; ein linker Mausklick zeigt welche.
Wie bei (fast) jedem Programm gibt es auch hier Macken: NDISASM mag absolut keine Leerzeichen im Pfad-/Datei-Namen; also ist evtl. ein umkopieren/umbenennen der Testdatei angesagt. UPX-Dateien erzeugen Müll und das leidige Problem aller Dis-Assembler schlägt auch hier zu: Obwohl nur ausführbare File-Sections dis-assembliert werden, können Byte-Folgen in Text-oder Daten-Passagen Fehlmeldungen hervorrufen. Dies hält sich aber in Grenzen bzw. tritt oft garnicht auf.
Viel Spaß :) !
Helle
 
Inzwischen ist ein Mon(d)@ vorbei und noch kein Feedback bisher ???

Naja, hab mir mal die Asteroids App angeschaut mit dem Tool:

disasm_asteroids-avxcujvf.jpg


@Helle53
Was sagt mir das jetzt? AVX Befehle überwiegen?
 
Die Erweiterungen meines Trinitys:
3dnowprefetch abm aes aperfmperf apic arat avx bmi1 clflush cmov cmp_legacy constant_tsc cpb cr8_legacy cx16 cx8 de decodeassists extapic extd_apicid f16c flushbyasid fma fma4 fpu fxsr fxsr_opt ht hw_pstate ibs lahf_lm lbrv lm lwp mca mce misalignsse mmx mmxext monitor msr mtrr nonstop_tsc nopl npt nrip_save nx osvw pae pat pausefilter pclmulqdq pdpe1gb perfctr_core perfctr_nb pfthreshold pge pni popcnt pse pse36 rdtscp rep_good sep skinit sse sse2 sse4_1 sse4_2 sse4a ssse3 svm svm_lock syscall tbm tce topoext tsc tsc_scale vmcb_clean vme wdt xop xsave

Mein Programmkopf sieht genauso aus wie beim Windhund. Laut /proc/cpuinfo hat Trinity aber die Monitor Extension. Warum wird die hier dann rot angezeigt?
Ist vme was anderes als vmx?
 
- Monitor ist korrigiert. Als "Entschädigung" habe ich den 3DNow!-Befehlssatz hinzugefügt (hier passend :) ).
- VME (Virtual-Mode Enhancements) sind CPU-Features und haben nichts mit dem Instruktionssatz zu tun, deshalb wird es nicht weiter ausgewertet. VMX ist Intel-Only und ist vergleichbar mit AMDs SVM.

Die Anzahl der jeweils angezeigten Instruktionen ist eben die Anzahl, wie oft diese im Code auftauchen. Welche das sind zeigt ein linker Mausklick an. "Normale" x86/x64-Instruktionen werden nicht weiter hervorgehoben. Die hier angezeigte Anzahl sagt aber nichts über die Abarbeitungs-Häufigkeit aus (Schleifen, Prozedur-Aufrufe). Dafür gibt es dann das Performance-Monitoring, das aber sehr an die jeweilige CPU gebunden ist.

Gruß
Helle
 
Zurück
Oben Unten