Code: Alles auswählen
type
gfxImage = packed record
data : pointer;
width, height : dword;
end;
gfxColor = packed record
b,g,r,a:byte;
end;
function GetColor(where:gfxImage;x,y:dword):gfxColor;
assembler;
asm
imul ecx,dword ptr [eax+4]
add ecx,edx
shl ecx,2
add ecx,[eax]
mov eax,dword ptr [ecx]
// where to move eax to get the color in the function result ???
end;
{ // This works
var c:gfxColor;
begin
system.move(pdword(where.data+(y*where.width+x) shl 2)^,c,4);
getcolor:=c;
end;
}
Bei einem StandartType müsste man den Rückgabewert in EAX schreiben, z.B. wenn man ein DWORD zurückgibt schreibt man einfach den Wert den man zurückgeben möchte in EAX. Aber wie ist es mit einem benutzerdifeniertem Typus?