Параметр массив для asm функции[Решено]
Добавлено: 03.03.2011 15:17:19
Есть такой тип данных:
Проводим маленький тест:
где CreateAr(D1); это процедура такого вида:
Пробовал и просто так:
Вывод в мемо выглядит все равно так:
Ведь мы перадали параметр как Var тобишь передали указатель на массив.
[EAX+8] говорит чтоб мы обратились к памяти по этому адресу, но что то я сделал не так.
Где, я заблудился?..
- Код: Выделить всё
TIntArray = array of integer;
Проводим маленький тест:
- Код: Выделить всё
procedure TForm1.Button1Click(Sender: TObject);
var D1:TIntArray;
i:Integer;
begin
SetLength(D1,5);
CreateAr(D1);
D1[0]:=1;
for i:=0 to High(D1) do
memo1.Lines.Add(IntToStr(D1[I]));
end;
где CreateAr(D1); это процедура такого вида:
- Код: Выделить всё
procedure CreateAr(var D:TIntArray); register;assembler;
{$ASMMODE intel}
asm
mov ECX,12
mov dword ptr [EAX+8],ECX
end;
Пробовал и просто так:
- Код: Выделить всё
mov [EAX+8],ECX
Вывод в мемо выглядит все равно так:
- Код: Выделить всё
1
0
0
0
0
Ведь мы перадали параметр как Var тобишь передали указатель на массив.
[EAX+8] говорит чтоб мы обратились к памяти по этому адресу, но что то я сделал не так.
Где, я заблудился?..