ASM-Ersatzcode gesucht
Verfasst: 28.10.2012 07:20
Mir kommt es wieder mal auf jede Nanosekunde an und habe deshalb eine kleine Frage an die Assembler-Geeks:
Kann ich z.B. folgenden Code in Bezug auf Geschwindigkeit verbessern?
Was ich bräuchte wäre z.B. sowas:
Gibts aber leider nicht
Das ganze Problem schaut so aus:
(der Pointer '*y' zeigt auf eine Liste die NICHT FORTLAUFENDE Adressen enthält)
Auf diese Art gibt es noch 2 weitere ähnliche Macros. Nehme dankend alles an was Speed bringt! 
(Verbesserungsvorschläge sollten aber auf 32+64-Bit Rechnern laufen können)
Kann ich z.B. folgenden Code in Bezug auf Geschwindigkeit verbessern?
Code: Alles auswählen
!MOV eax, dword[ebx+ 4]
!INC dword[eax]Code: Alles auswählen
!INC dword[dword[ebx+ 4]]Das ganze Problem schaut so aus:
(der Pointer '*y' zeigt auf eine Liste die NICHT FORTLAUFENDE Adressen enthält)
Code: Alles auswählen
Macro StoreNewParameter
!mov ebx,dword[p_y]
;----
!mov eax,dword[ebx] ;k1(1)
!Inc dword[eax]
;----
!mov eax,dword[ebx+ 4] ;k1(2)
!Inc dword[eax]
!mov eax,dword[ebx+ 8] ;k2(1,2)
!Inc dword[eax]
;----
!mov eax,dword[ebx+12] ;k1(3)
!Inc dword[eax]
!mov eax,dword[ebx+16] ;k2(1,3)
!Inc dword[eax]
!mov eax,dword[ebx+20] ;k2(2,3)
!Inc dword[eax]
;---
!mov eax,dword[ebx+24] ;k1(4)
!Inc dword[eax]
!mov eax,dword[ebx+28] ;k2(1,4)
!Inc dword[eax]
!mov eax,dword[ebx+32] ;k2(2,4)
!Inc dword[eax]
!mov eax,dword[ebx+36] ;k2(3,4)
!Inc dword[eax]
;----
!mov eax,dword[ebx+40] ;k1(5)
!Inc dword[eax]
!mov eax,dword[ebx+44] ;k2(1,5)
!Inc dword[eax]
!mov eax,dword[ebx+48] ;k2(2,5)
!Inc dword[eax]
!mov eax,dword[ebx+52] ;k2(3,5)
!Inc dword[eax]
!mov eax,dword[ebx+56] ;k2(4,5)
!Inc dword[eax]
;----
!mov eax,dword[ebx+60] ;k1(6)
!Inc dword[eax]
!mov eax,dword[ebx+64] ;k2(1,6)
!Inc dword[eax]
!mov eax,dword[ebx+68] ;k2(2,6)
!Inc dword[eax]
!mov eax,dword[ebx+72] ;k2(3,6)
!Inc dword[eax]
!mov eax,dword[ebx+76] ;k2(4,6)
!Inc dword[eax]
!mov eax,dword[ebx+80] ;k2(5,6)
!Inc dword[eax]
EndMacro(Verbesserungsvorschläge sollten aber auf 32+64-Bit Rechnern laufen können)