📄 ms1750.inc
字号:
;; GCC assembler includefile for AS1750;;;; Macros defined:;; EFLR.M #d,#s Load the three regs starting at R#s to R#d following.;; RET.M #fs Return from function (uses the framesize #fs)UC SET 15; Return from function ; parameter: framesize MACRO RET.M IF `1` > 0 IF `1` <= 16 AISP R14,`1` ELSE AIM R14,`1` ENDIF ENDIF LR R15,R14 URS R15 ENDMACRO; Useful instructions missing from the 1750A standard:; Extended Float Load from Registers MACRO EFLR.M ; args : #1=dest-regno, #2=source-regnoONE SET `1` + 2TWO SET `2` + 2 IF `1` >= `2` || `1`+2 < `2` LR R`ONE`,R`TWO` DLR R`1`,R`2` ELSE DLR R`1`,R`2` LR R`ONE`,R`TWO` DLR R`1`,R`1` ; Just to update condition codes ENDIF ENDMACRO; The following leave the condition codes haywire. But that is; accounted for (see notice_update_cc in config/1750a.c.); Double ANd Register with Register MACRO DANR.MONE SET `1` + 1TWO SET `2` + 1 ANDR R`1`,R`2` ANDR R`ONE`,R`TWO` ENDMACRO; Double OR Register with Register MACRO DORR.MONE SET `1` + 1TWO SET `2` + 1 ORR R`1`,R`2` ORR R`ONE`,R`TWO` ENDMACRO; Double eXoR Register with Register MACRO DXRR.MONE SET `1` + 1TWO SET `2` + 1 XORR R`1`,R`2` XORR R`ONE`,R`TWO` ENDMACRO; Double Nand Register with register MACRO DNR.MONE SET `1` + 1TWO SET `2` + 1 NR R`1`,R`2` NR R`ONE`,R`TWO` ENDMACRO; Unsigned Compare Immediate MACRO UCIM.MLAST SET `1` + 3 PSHM R`1`,R`LAST`LO SET `1` + 1 LR R`LO`,R`1` XORR R`1`,R`1`HI SET `1` + 2 XORR R`HI`,R`HI` LIM R`LAST`,`2` DCR R`1`,R`HI` POPM R`1`,R`LAST` ENDMACRO; Unsigned Compare Register with register MACRO UCR.M PSHM R10,R13 ; R12 and R13 are assumed not to be input parameters LR R13,R`2` LR R11,R`1` XORR R12,R12 XORR R10,R10 DCR R10,R12 POPM R10,R13 ENDMACRO; Unsigned Compare register with memory MACRO UC.M PSHM R10,R13 L R13,`2` LR R11,R`1` XORR R12,R12 XORR R10,R10 DCR R10,R12 POPM R10,R13 ENDMACRO; Double Unsigned Compare Register with register MACRO DUCR.M PSHM R13,R14 ; R13 and R14 are assumed not to be input parametersLOW1 SET `1` + 1LOW2 SET `2` + 1 PSHM R`1`,R`LOW1` PSHM R`2`,R`LOW2` LR R13,R`LOW1` LR R14,R`LOW2` DSRL R`1`,1 DSRL R`2`,1 DCR R`1`,R`2` BNE +6 ANDM R13,1 ANDM R14,1 CR R13,R14 POPM R`2`,R`LOW2` POPM R`1`,R`LOW1` POPM R13,R14 ENDMACRO; Double Unsigned Compare register with memory MACRO DUC.M PSHM R13,R14 ; R13 and R14 are assumed not to be input parametersLOW1 SET `1` + 1 PSHM R`1`,R`LOW1` DL R13,`2` DSRL R`1`,1 DSRL R13,1 DCR R`1`,R13 BNE +10 ; done, go pop the saved regs DL R13,`2` ; interested in the *low* word (R14) L R13,1,R15 ANDM R13,1 ANDM R14,1 CR R13,R14 POPM R`1`,R`LOW1` POPM R13,R14 ENDMACRO
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -