; ; Small-C Run Time Library for Win NT ; ; Nasm version 17/Nov/98 H T Walheim ; Revised: 20/Nov/98 HTW [Bugs in switch] ; _CCARGC: ;B+ Ellipses arguments ( ,...) ;cl - argument count xor eax,eax movzx eax,cl ; No sign-extension ret ;E:. ;B+ Compare __ult: ;B+ ??? cmp eax,ebx ja true xor eax,eax ret ;E:. __ugt: ;B+ ??? cmp eax,ebx jb true xor eax,eax ret ;E:. __ule: ;B+ ??? cmp eax,ebx jae true xor eax,eax ret ;E:. __uge: ;B+ ??? cmp eax,ebx jbe true xor eax,eax ret ;E:. __eq: ;B+ ??? cmp eax,ebx je true xor eax,eax ret ;E:. __ne: ;B+ ??? cmp eax,ebx jne true xor eax,eax ret ;E:. __lt: ;B+ ??? cmp eax,ebx jg true xor eax,eax ret ;E:. __gt: ;B+ ??? cmp eax,ebx jl true xor eax,eax ret ;E:. __le: ;B+ ??? cmp eax,ebx jge true xor eax,eax ret ;E:. __ge: ;B+ ??? cmp eax,ebx jle true xor eax,eax ret ;E:. ;E:. __lneg: ;B+ Logical Negate of Primary or eax,eax jnz false true: mov eax,1 ret false: xor eax,eax ret ;E:. __switch: ;B+ Execute "switch" statement ;eax - switch value ;[esp] - pointer to switch table ; dd addr1,value1 ; ... ; dd 0 ; [jmp default] ; continuation ; ; Revised: 20/Nov/98 [JECXZ needed] pop ebx jmp skip back: add ebx,8 ;next case-pair skip: mov ecx,[ebx] ;case-label location (adress) jecxz default cmp eax,[ebx+4] ;test case-value jnz back jmp ecx ;match -- jump to case default: add ebx,4 jmp ebx ;jump to default/continuation ;E:.