"Zusammengesetzte" Befehle
-
Hallo,
Es gibt ja "einfache" und "komplexe" Befehle in der Assembler-Sprache.
Mit komplex meine ich Befehle wiejcxz whatever
gegenüber
cmp cx, 0 je whatever ' bzw. test cx, cx je whatever ' was ist eigentlich besser bei einem "Null-Test"?
oder
lods ... stos ... movs ...
gegenüber
mov ax, [quelle] mov [ziel], ax jmp anfang_der_schleife
Denke mal ihr wisst was ich meine...
Nun würde ich gerne wissen, sind diese zusammengesetzen Befehle performanter oder überhaupt "sinnvoll"?Gruß!
-
Du musst dir nur anschauen, wieviele Takte sie auf dem entsprechenden Prozessor benoetigen.
-
Muss ich mir dafür das entsprechende Datasheet durchlesen oder gibts da effizientere Möglichkeiten?
Habe mal gehört, dass ich mir die benötigten Takte via "rdtsc" errechnen kann, aber ich kann das nicht so recht glauben weil wenn mein Prozessor meine Befehle nach belieben umsortiert, könnte es doch sein, dass rdtsc viel zu früh ausgeführt wird oder? Dann wäre die Möglichkeit also ziemlich ungenau...
-
Edit:
Windows 7 x64, Visual Studio 2012, i7 2600Krdtsc mov RCX, RAX nop rdtsc sub RAX, RCX mov RCX, RAX call ExitProcess ret
= 0x15
-
Kommt z.T. auf Prozessorversionen/modi usw. an.
Stringbefehle z.B. sind immer auch standardisiert, sind multibefehle, lassen sich oft leichter lesen.Und was jetzt inwieweit performanter oder leichter lesbar oder whatever ist, kommt öfter auch immer wieder auf den Zusammenhang an.
http://software.intel.com/en-us/articles/intel-sdp-products/
http://de.wikipedia.org/wiki/Profiler_(Programmierung)
-
Und was jetzt inwieweit performanter oder leichter lesbar oder whatever ist, kommt öfter auch immer wieder auf den Zusammenhang an.
Warum habe ich diese Antwort befürchtet?
Okay, danke!