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

📄 memcpyx.c

📁 Small Device C Compiler 面向Inter8051
💻 C
字号:
#include <string.h>// FIXME: can optimize even further on '400 with auto-increment/auto-toggle.void xdata * memcpyx (	void xdata * dst,	void xdata * src,	int count	) _naked{    /* Shut compiler up about unused parameters. */    dst; src; count;    _asm    ; Destination is in DPTR. Save it on stack so we can return it at end.        push dpx    push dph    push dpl        mov  dps, #0x1        ; Alternate DPTR.        ; count  is in _memcpyx_PARM_3    mov  dptr, #_memcpyx_PARM_3    movx a, @dptr    inc dptr    mov r2, a    movx a, @dptr    mov r3, a    ; src is in _memcpyx_PARM_2    mov  dptr, #_memcpyx_PARM_2    movx a, @dptr    inc  dptr    push acc    movx a, @dptr    inc  dptr    push acc    movx a, @dptr    mov  dpx1, a    pop  dph1    pop  dpl1    mov	dps, #0x21	; Current DPTR is alt DPTR, toggle after each op.        ; src is in alt DPTR, dst is in normal DPTR, count is in r2/r3.        ; If we have zero bytes to copy, quick out.    mov	 a, r2    orl  a, r3    jz   _memcpy_done    ; increment r3 if r2 != 0 (makes djnz end-of-loop sequence possible).    inc r3    cjne r2, #0x0, _memcpyx_loopTop    dec r3_memcpyx_loopTop:    movx a, @dptr    movx @dptr, a    inc dptr    inc dptr    djnz r2, _memcpyx_loopTop    djnz r3, _memcpyx_loopTop    _memcpy_done:    mov dps, #0x0    pop dpl    pop dph    pop dpx    ret_endasm;        }

⌨️ 快捷键说明

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