Ich stoße häufiger auf AssemblerCode wie diesen hier:
Quelltext
1: 2: 3: 4: 5: 6: 7:
| MOV EAX,66666667 EAX=66666667 IMUL ECX EAX=333333CB, EDX=00000065 SAR EDX,2 EDX=00000019 MOV ECX,EDX ECX=00000019 ADD EDX,EDI EDX=00000E59 SHR ECX,1F ECX=00000000 ADD ECX,EDX ECX=00000E59 |
Was genau macht das?
Erst eine multiplikation mit einer riesigen Konstante. Dann wird nur das Low-DWord behandelt
das wird erst duch 4 geteilt und zu einem vorherigem ergebnis addiert
danach wird noch das low-DWord durch 2^31 geteilt und das dazu addiert (praktisch also nur das höchste bit)
sehe ich das richtig?
wozu das ganze? kennt so was schon jemand? (Als ich die konstante in google eingegeben habe bin ich auf viele seiten gestoßen mit programmen, in denen die auch verwendet wurde)
Edit: Ok. lt
blog.dkbza.org/2007/...mpiler-produced.html ist es ein simple division durch 10
zumindest die ersten 3 Zeilen
bleibt also noch die frage nach ne letzten beiden