Hallo,
ich hab mich heute mal rangesetzt und wollte in Delphi was mit dem Inline-Assembler machen, man muss dazu sagen ich hab keine Ahnung von
ASM und daher nicht hauen wenn ich da totale kacke gemacht hab:
Delphi-Quellcode:
procedure mandelbrot(MaxIt : integer);
var x, y, n : integer;
xc, yc, xzalt, yzalt, xz, yz, buff, buff2 : real;
Begin
for x := 1
to Form1.Image1.Width-1
do
Begin
for y := 1
to Form1.Image1.Height-1
do
Begin
xc := x / 100 - 2.1;
yc := y / 100 - 1.1;
xzalt := 0;
yzalt := 0;
n := 0;
while(n <= MaxIt)
and (xzalt*xzalt+yzalt*yzalt < 4)
do
Begin
asm
INC n;
MOV buff, xzalt;
MOV ax,buff;
IMUL buff;
MOVE buff2, yzalt;
MOV ax,buff2;
IMUL buff2;
SUB buff, buff2;
ADD buff, xc;
ADD xz, buff;
MOV ax, 2;
IMUL xzalt;
MOV ax, xzalt;
IMUL yzalt;
ADD yzalt,yc;
MOV yz, yzalt;
MOV xzalt,xz;
MOV yzalt, yz;
end;
end;
if n >= MaxIt
then Form1.Image1.Canvas.Pixels[x, y] := clblack
else Form1.Image1.Canvas.Pixels[x, y] := clred;
end;
end;
end;
Ich bin mir jetzt nicht so sicher ob das stimmt, aber ich bekomme schon in der 2.
ASM zeile nen Fehler, und zwar glaub ich liegt es daran das ich mit mov keine real variablen "zuweisen" kann. Wie geht das oder was mach ich falsch?