* Timo Kreuzer (timo.kreuzer@reactos.org)
*/
-.intel_syntax noprefix
+#include <asm.inc>
+.code
/*
* BOOLEAN
* _cdecl
* DIB_32BPP_ColorFill(SURFOBJ* pso, RECTL* prcl, ULONG iColor);
*/
-.globl _DIB_32BPP_ColorFill
+PUBLIC _DIB_32BPP_ColorFill
_DIB_32BPP_ColorFill:
push ebp
mov ebp, esp
mov edx, [ebp+12] /* edx = prcl */
mov ecx, [ebp+8] /* ecx = pso */
- mov ebx, [ecx+0x24] /* ebx = pso->lDelta; */
+ mov ebx, [ecx+36] /* ebx = pso->lDelta; */
mov [esp], ebx /* lDelta = pso->lDelta; */
mov edi, [edx+4] /* edi = prcl->top; */
mov eax, edi /* eax = prcl->top; */
imul eax, ebx /* eax = prcl->top * pso->lDelta; */
- add eax, [ecx+0x20] /* eax += pso->pvScan0; */
+ add eax, [ecx+32] /* eax += pso->pvScan0; */
mov ebx, [edx] /* ebx = prcl->left; */
lea esi, [eax+ebx*4] /* esi = pvLine0 = eax + 4 * prcl->left; */
mov ebx, [edx+8] /* ebx = prcl->right; */
sub ebx, [edx] /* ebx = prcl->right - prcl->left; */
- jbe end /* if (ebx <= 0) goto end; */
+ jbe .end /* if (ebx <= 0) goto end; */
mov edx, [edx+12] /* edx = prcl->bottom; */
sub edx, edi /* edx -= prcl->top; */
- jbe end /* if (eax <= 0) goto end; */
+ jbe .end /* if (eax <= 0) goto end; */
mov eax, [ebp+16] /* eax = iColor; */
cld
dec edx /* cy--; */
jnz for_loop /* } while (cy > 0); */
-end:
+.end:
mov eax, 1
add esp, 4
pop edi
pop ebx
pop ebp
ret
+
+END
* PROGRAMMER: Timo Kreuzer
*/
+#include <asm.inc>
+
+.code
/*******************************************************************************
* IEEE 754-1985 single precision floating point
* FLOATOBJ_SubLong - wrapper
*/
-.intel_syntax noprefix
-.text
-
#define lMant 0
#define lExp 4
* FLOATOBJ_SetFloat(IN OUT PFLOATOBJ pf, IN FLOATL f);
*/
_FLOATOBJ_SetFloat@8:
-.global _FLOATOBJ_SetFloat@8
+PUBLIC _FLOATOBJ_SetFloat@8
push ebp
mov ebp, esp
mov ecx, [esp + PARAM2] /* Load the float into ecx */
mov eax, ecx /* Copy float to eax for later */
- test ecx, 0x7f800000 /* Check for zero exponent - 0 or denormal */
+ test ecx, HEX(7f800000) /* Check for zero exponent - 0 or denormal */
jz SetFloat0 /* If it's all zero, ... */
shl ecx, 7 /* Put the bits for the mantissa in place */
cdq /* Fill edx with the sign from the FLOATL in eax */
- and ecx, 0x7fffffff /* Mask out invalid field in the mantissa */
+ and ecx, HEX(7fffffff) /* Mask out invalid field in the mantissa */
shr eax, 23 /* Shift the exponent in eax in place */
- or ecx, 0x40000000 /* Set bit for 1 in the mantissa */
- and eax, 0xff /* Mask out invalid fields in the exponent in eax */
+ or ecx, HEX(40000000) /* Set bit for 1 in the mantissa */
+ and eax, HEX(0ff) /* Mask out invalid fields in the exponent in eax */
xor ecx, edx /* Make use of the sign bit expanded to full edx */
*
*/
_FLOATOBJ_GetFloat@4:
-.global _FLOATOBJ_GetFloat@4
+PUBLIC _FLOATOBJ_GetFloat@4
push ebp
mov ebp, esp
sub eax, edx
jz GetFloatRet
- and ecx, 0xff /* Mask out invalid fields in the exponent */
- and eax, 0x3fffffff /* Mask out invalid fields in mantissa */
+ and ecx, HEX(0ff) /* Mask out invalid fields in the exponent */
+ and eax, HEX(3fffffff) /* Mask out invalid fields in mantissa */
shl ecx, 23 /* Shift exponent in place */
shr eax, 7 /* Shift mantissa in place */
- and edx, 0x80000000 /* Reduce edx to sign bit only */
+ and edx, HEX(80000000) /* Reduce edx to sign bit only */
or eax, ecx /* Set exponent in result */
or eax, edx /* Set sign bit in result */
* Instead of using abs(l), which is 3 + 2 instructions, use a branch.
*/
_FLOATOBJ_SetLong@8:
-.global _FLOATOBJ_SetLong@8
+PUBLIC _FLOATOBJ_SetLong@8
push ebp
mov ebp, esp
*
*/
_FLOATOBJ_GetLong@4:
-.global _FLOATOBJ_GetLong@4
+PUBLIC _FLOATOBJ_GetLong@4
push ebp
mov ebp, esp
* FLOATOBJ_Equal(IN PFLOATOBJ pf1, IN PFLOATOBJ pf2);
*/
_FLOATOBJ_Equal@8:
-.global _FLOATOBJ_Equal@8
+PUBLIC _FLOATOBJ_Equal@8
push ebp
mov ebp, esp
* FLOATOBJ_EqualLong(IN PFLOATOBJ pf, IN LONG l);
*/
_FLOATOBJ_EqualLong@8:
-.global _FLOATOBJ_EqualLong@8
+PUBLIC _FLOATOBJ_EqualLong@8
push ebp
mov ebp, esp
*
*/
_FLOATOBJ_GreaterThan@8:
-.global _FLOATOBJ_GreaterThan@8
+PUBLIC _FLOATOBJ_GreaterThan@8
push ebp
mov ebp, esp
* LOATOBJ_GreaterThan
*/
_FLOATOBJ_GreaterThanLong@8:
-.global _FLOATOBJ_GreaterThanLong@8
+PUBLIC _FLOATOBJ_GreaterThanLong@8
push ebp
mov ebp, esp
*
*/
_FLOATOBJ_LessThan@8:
-.global _FLOATOBJ_LessThan@8
+PUBLIC _FLOATOBJ_LessThan@8
push ebp
mov ebp, esp
* Currently implemented as a wrapper around FLOATOBJ_SetLong and FLOATOBJ_LessThan
*/
_FLOATOBJ_LessThanLong@8:
-.global _FLOATOBJ_LessThanLong@8
+PUBLIC _FLOATOBJ_LessThanLong@8
push ebp
mov ebp, esp
* No special handling for 0, where mantissa is 0
*/
_FLOATOBJ_Mul@8:
-.global _FLOATOBJ_Mul@8
+PUBLIC _FLOATOBJ_Mul@8
push ebp
mov ebp, esp
lea edx, [edx + ecx -2] /* Normalize exponent in edx */
- or eax, 0x80000000 /* Set sign bit */
+ or eax, HEX(80000000) /* Set sign bit */
mov ecx, [esp + PARAM1] /* Load pf1 into ecx */
mov [ecx + lMant], eax /* Save back mantissa */
* Currently implemented as a wrapper around FLOATOBJ_SetFloat and FLOATOBJ_Mul
*/
_FLOATOBJ_MulFloat@8:
-.global _FLOATOBJ_MulFloat@8
+PUBLIC _FLOATOBJ_MulFloat@8
push ebp
mov ebp, esp
* Currently implemented as a wrapper around FLOATOBJ_SetLong and FLOATOBJ_Mul
*/
_FLOATOBJ_MulLong@8:
-.global _FLOATOBJ_MulLong@8
+PUBLIC _FLOATOBJ_MulLong@8
push ebp
mov ebp, esp
*
*/
_FLOATOBJ_Div@8:
-.global _FLOATOBJ_Div@8
+PUBLIC _FLOATOBJ_Div@8
push ebp
mov ebp, esp
push ebx
div ecx /* Do an unsigned divide */
xor ecx, ecx /* Adjust result */
- test eax, 0x80000000
+ test eax, HEX(80000000)
setnz cl
shr eax, cl
* Currently implemented as a wrapper around FLOATOBJ_SetFloat and FLOATOBJ_Div
*/
_FLOATOBJ_DivFloat@8:
-.global _FLOATOBJ_DivFloat@8
+PUBLIC _FLOATOBJ_DivFloat@8
push ebp
mov ebp, esp
sub esp, 8 /* Make room for a FLOATOBJ on the stack */
* Currently implemented as a wrapper around FLOATOBJ_SetLong and FLOATOBJ_Div
*/
_FLOATOBJ_DivLong@8:
-.global _FLOATOBJ_DivLong@8
+PUBLIC _FLOATOBJ_DivLong@8
push ebp
mov ebp, esp
sub esp, 8 /* Make room for a FLOATOBJ on the stack */
*
*/
_FLOATOBJ_Add@8:
-.global _FLOATOBJ_Add@8
+PUBLIC _FLOATOBJ_Add@8
push ebp
mov ebp, esp
push ebx
* Currently implemented as a wrapper around FLOATOBJ_SetFloat and FLOATOBJ_Add
*/
_FLOATOBJ_AddFloat@8:
-.global _FLOATOBJ_AddFloat@8
+PUBLIC _FLOATOBJ_AddFloat@8
push ebp
mov ebp, esp
sub esp, 8 /* Make room for a FLOATOBJ on the stack */
* Currently implemented as a wrapper around FLOATOBJ_SetLong and FLOATOBJ_Add
*/
_FLOATOBJ_AddLong@8:
-.global _FLOATOBJ_AddLong@8
+PUBLIC _FLOATOBJ_AddLong@8
push ebp
mov ebp, esp
sub esp, 8 /* Make room for a FLOATOBJ on the stack */
*
*/
_FLOATOBJ_Sub@8:
-.global _FLOATOBJ_Sub@8
+PUBLIC _FLOATOBJ_Sub@8
push ebp
mov ebp, esp
push ebx
* Currently implemented as a wrapper around FLOATOBJ_SetFloat and FLOATOBJ_Sub
*/
_FLOATOBJ_SubFloat@8:
-.global _FLOATOBJ_SubFloat@8
+PUBLIC _FLOATOBJ_SubFloat@8
push ebp
mov ebp, esp
sub esp, 8 /* Make room for a FLOATOBJ on the stack */
* Currently implemented as a wrapper around FLOATOBJ_SetLong and FLOATOBJ_Sub
*/
_FLOATOBJ_SubLong@8:
-.global _FLOATOBJ_SubLong@8
+PUBLIC _FLOATOBJ_SubLong@8
push ebp
mov ebp, esp
sub esp, 8 /* Make room for a FLOATOBJ on the stack */
*
*/
_FLOATOBJ_Neg@4:
-.global _FLOATOBJ_Neg@4
+PUBLIC _FLOATOBJ_Neg@4
push ebp
mov ebp, esp
pop ebp /* Return */
ret 4
-
+END
/* EOF */