📄 setjmp.s
字号:
/* setjmp/longjmp routines for M68HC11 & M68HC12. * Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) * * The authors hereby grant permission to use, copy, modify, distribute, * and license this software and its documentation for any purpose, provided * that existing copyright notices are retained in all copies and that this * notice is included verbatim in any distributions. No written agreement, * license, or royalty fee is required for any of the authorized uses. * Modifications to this software may be copyrighted by their authors * and need not follow the licensing terms described here, provided that * the new terms are clearly indicated on the first page of each file where * they apply. */#if __INT__ == 32# define val 4# define INT32(X) X#else# define val 2# define INT32(X)#endif#ifdef mc6811# define REG(X) *X#else# define REG(X) X#endif .sect .text .global setjmp .global longjmp#ifdef mc6811setjmp: xgdx tsy ldd 0,y std 0,x sty 2,x ldd REG(_.frame) std 4,x ldd REG(_.d1) std 6,x ldd REG(_.d2) std 8,x ldd REG(_.d3) std 10,x ldd REG(_.d4) std 12,x ldd REG(_.d5) std 14,x ldd REG(_.d6) std 16,x ldd REG(_.d7) std 18,x ldd REG(_.d8) std 20,xINT32( ldx #0) clra clrb rts#elsesetjmp: xgdx movw 0,sp,2,x+ sts 2,x+ movw _.frame,2,x+ movw _.d1,2,x+ movw _.d2,2,x+ movw _.d3,2,x+ movw _.d4,2,x+ movw _.d5,2,x+ movw _.d6,2,x+ movw _.d7,2,x+ movw _.d8,2,x+INT32( ldx #0) clra clrb rts#endif#ifdef mc6811longjmp: xgdx tsy ldd val,y bne do_jump ldd #1do_jump: xgdy ldd 4,x std REG(_.frame) ldd 6,x std REG(_.d1) ldd 8,x std REG(_.d2) ldd 10,x std REG(_.d3) ldd 12,x std REG(_.d4) ldd 14,x std REG(_.d5) ldd 16,x std REG(_.d6) ldd 18,x std REG(_.d7) ldd 20,x std REG(_.d8) ldd 0,x ldx 2,x txs std 0,xINT32( ldx #0) xgdy rts#elselongjmp: xgdx ldy val,sp bne do_jump ldy #1do_jump: ldd 4,x+ movw 2,x+,_.frame movw 0,x,_.d1 movw 2,x,_.d2 movw 4,x,_.d3 movw 6,x,_.d4 movw 8,x,_.d5 movw 10,x,_.d6 movw 12,x,_.d7 movw 14,x,_.d8 ldx -4,x txs std 0,xINT32( ldx #0) xgdy rts#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -