Mercurial > public > hwos_code
view src/varargs.inc @ 621:1ad0531e9078
3.01 release
author | heinrichsweikamp |
---|---|
date | Sat, 23 Feb 2019 16:51:14 +0100 |
parents | ca4556fb60b9 |
children | c40025d8e750 |
line wrap: on
line source
;============================================================================= ; ; File varargs.inc ; ; Utilities to pass multiple arguments in compact code stream. ; ; Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved. ;============================================================================= ; HISTORY ; 2011-05-27 : [jDG] Creation. ; VARARGS_BEGIN macro movff TOSL, TBLPTRL movff TOSH, TBLPTRH movff TOSU, TBLPTRU endm VARARGS_GET8 macro register tblrd*+ movff TABLAT, register endm VARARGS_GET16 macro register tblrd*+ movff TABLAT, register+0 tblrd*+ movff TABLAT, register+1 endm VARARGS_GET24 macro register tblrd*+ movff TABLAT, register+0 tblrd*+ movff TABLAT, register+1 tblrd*+ movff TABLAT, register+2 endm VARARGS_ALIGN macro local no_tblptr_align btfss TBLPTRL,0 bra no_tblptr_align incf TBLPTRL movlw 0 addwfc TBLPTRH addwfc TBLPTRU no_tblptr_align: endm VARARGS_END macro ; compute string length (modulo 256): movf TOSL,W subwf TBLPTRL,W ; then 24 bit add to return address addwf TOSL,F movlw 0 ; clear WREG, but keep carry addwfc TOSH,F addwfc TOSU,F endm