Registriert seit: 31. Jul 2003
Ort: Dresden
1.386 Beiträge
Delphi 7 Architect
|
Re: Assembler in Delphi! Speichersack?
30. Sep 2003, 14:07
So ich habe gerade versucht das gegenstück zu verbessern!
Delphi-Quellcode:
function TColorPalette.GetColorRect(aiCol: Integer): TRect;
var x, y : Integer;
{begin
if aiCol = -1 then
Result := Rect(0, 0, 0, 0)
else
begin
x := aiCol mod 8;
y := aiCol div 8;
Result := Rect(x * 17, y * 17, x * 17 + 14, y * 17 + 14);
end;
end; }
asm
push edi
test edx, edx
js @@nullrect // aiCol < 0
mov edi, 8
mov eax, edx
xor edx, edx
div edi // aiCol div 8
mov x, edx // = x
mov y, eax // = y
mov edi, 17 // Abstand
// berachne
mov eax, x
mul edi
mov @Result.Left, eax
mov eax, y
mul edi
mov @Result.Top, eax
mov eax, x
mul edi
add eax, 14
mov @Result.Right, eax
mov eax, y
mul edi
add eax, 14
mov @Result.Bottom, eax
jmp @@exit
@@nullrect:
mov @Result.Left, 0
mov @Result.Top, 0
mov @Result.Right, 0
mov @Result.Bottom, 0
@@exit:
pop edi
end;
Geht das noch eleganter?
Warum kann man ecx nicht nutzen
- ciao neo -
Es gibt niemals dumme Fragen, sondern nur dumme Antworten!
|
|
Zitat
|