0,0 → 1,115 |
;------------------------- |
; |
; ASM JJ's 2 C macros ;-) |
; |
; version history: |
; |
; *0.01(02/08/05): if_e, if_ne, if_a, if_b |
; *0.02(02/09/05): push_abc, pop_abc |
; ch_sign, abs |
; |
; E.X.: if_e dword [x],100,.end_if |
; if x = 100 do the instrucsions to .end_if: |
; == |
macro if_e arg1,arg2,label |
{ |
if arg1 eq 0 | arg2 eq 0 | arg1 eqtype 12 | arg2 eqtype 12 |
cmp arg1,arg2 |
jne label |
else |
push edx |
mov edx,arg1 |
cmp edx,arg2 |
pop edx |
jne label |
end if |
} |
|
; != |
macro if_ne arg1,arg2,label |
{ |
if arg1 eq 0 | arg2 eq 0 | arg1 eqtype 12 | arg2 eqtype 12 |
cmp arg1,arg2 |
je label |
else |
push edx |
mov edx,arg1 |
cmp edx,arg2 |
pop edx |
je label |
end if |
} |
|
; > |
macro if_a arg1,arg2,label |
{ |
if arg1 eq 0 | arg2 eq 0 | arg1 eqtype 12 | arg2 eqtype 12 |
cmp arg1,arg2 |
jbe label |
else |
push edx |
mov edx,arg1 |
cmp edx,arg2 |
pop edx |
jbe label |
end if |
} |
|
; < |
macro if_b arg1,arg2,label |
{ |
if arg1 eq 0 | arg2 eq 0 | arg1 eqtype 12 | arg2 eqtype 12 |
cmp arg1,arg2 |
jae label |
else |
push edx |
mov edx,arg1 |
cmp edx,arg2 |
pop edx |
jae label |
end if |
} |
|
macro push_abc |
{ |
push eax |
push ebx |
push ecx |
push edx |
push edi |
push esi |
} |
|
macro pop_abc |
{ |
pop esi |
pop edi |
pop edx |
pop ecx |
pop ebx |
pop eax |
} |
|
UNDER_0 equ 0x7FFFFFFF |
; changes sign e.x. ch_sign -1 = 1 |
macro ch_sign arg |
{ |
push edx |
mov edx,0 |
sub edx,arg |
pop edx |
} |
|
; absolut e.x. abs -24 = 24 |
macro abs arg |
{ |
local .end_if |
if_a arg,UNDER_0,.end_if |
ch_sign arg |
.end_if: |
} |
;--------------------------------------- |
|
|
|
|
Property changes: |
Added: svn:eol-style |
+native |
\ No newline at end of property |