📄 memset.s
字号:
/* memset.S */#include <asm/linkage.h>#if defined(__H8300H__) .h8300h#endif#if defined(__H8300S__) .h8300s#endif .text.global SYMBOL_NAME(memset);;void *memset(*ptr, int c, size_t count);; ptr = er0;; c = er1(r1l);; count = er2SYMBOL_NAME_LABEL(memset) btst #0,r0l beq 2f ;; odd address1: mov.b r1l,@er0 adds #1,er0 dec.l #1,er2 beq 6f ;; even address2: mov.l er2,er3 cmp.l #4,er2 blo 4f ;; count>=4 -> count/4#if defined(__H8300H__) shlr.l er2 shlr.l er2#endif#if defined(__H8300S__) shlr.l #2,er2#endif ;; byte -> long mov.b r1l,r1h mov.w r1,e13: mov.l er1,@er0 adds #4,er0 dec.l #1,er2 bne 3b4: ;; count % 4 and.b #3,r3l beq 6f5: mov.b r1l,@er0 adds #1,er0 dec.b r3l bne 5b6: rts
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -