Home > Back-end >  Assembly translation for Pascal
Assembly translation for Pascal

Time:10-22

Did Daniel help translate down the assembly code, very grateful!
 
Procedure _ClearAlpha (Src: Pointer; Count: integer; Value: longword);
Asm
{the Clear alpha}
PUSH EDI

MOV EDI, EAX {X}
MOV EAX, ECX {Value}
MOV ECX, EDX {Count}
The TEST ECX, ECX
JS @ exit
AND EAX, $00 FFFFFF
@ 1:
MOV EDX, (EDI)
AND EDX, $00 FFFFFF
CMP EDX, EAX
Developed @ 2
MOV (EDI), EDX
@ 2:
The ADD EDI, 4

LOOP @ 1

@ exit:
POP EDI
end;

There is a:
 
Procedure _FillLongwordRect (Src: Pointer; W, H, X1, Y1, X2, Y2: Integer; Value: Longword);
Asm
PUSH EDI
PUSH EAX
PUSH EBX
PUSH ECX
PUSH EDX

MOV EDI, EAX
XOR EBX, EBX
XOR EAX, EAX
MOV EBX, W
MOV EAX, Y1
The MUL EBX
The ADD EAX, X1
The ADD EDI, EAX
The ADD EDI, EAX
The ADD EDI, EAX
The ADD EDI, EAX

MOV EBX, X2
SUB EBX, X1
INC EBX
The TEST EBX, EBX
JS @ exit

MOV EDX, Y2
SUB EDX, Y1
INC EDX
The TEST EDX, EDX
JS @ exit
MOV EAX, VALUE

@ 1:
PUSH EDI
MOV ECX, EBX
CLD
REP STOSD
POP EDI
POP ECX
The ADD EDI, ECX
The ADD EDI, ECX
The ADD EDI, ECX
The ADD EDI, ECX
PUSH ECX
DEC EDX
CMP EDX, 0
Developed @ 1

@ exit:
POP EDX
POP ECX
POP EBX
POP EAX
POP EDI
end;

  • Related