⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 intrins.asm

📁 small c complier 它也Menuet OS的一个附件,同样他也是有汇编实现
💻 ASM
字号:
;
; 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:.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -