📄 strcpy.s
字号:
TEXT strcpy(SB), $0MOVW R7, 0(FP) MOVW s1+0(FP), R9 /* R9 is to pointer */ MOVW s2+4(FP), R10 /* R10 is from pointer *//* * test if both pointers * are similarly word aligned */ XOR R9,R10, R7 ANDCC $3,R7, R0 BNE una/* * make byte masks */ MOVW $0xff, R17 SLL $8,R17, R16 SLL $16,R17, R13 SLL $24,R17, R12/* * byte at a time to word align */al1: ANDCC $3,R10, R0 BE al2 MOVB (R10), R11 ADD $1, R10 MOVB R11, (R9) ADD $1, R9 SUBCC R0,R11, R0 BNE al1 JMP out/* * word at a time */al2: ADD $4, R9 MOVW (R10), R11 /* fetch */ ADD $4, R10 ANDCC R12,R11, R0 /* is it byte 0 */ BE b0 ANDCC R13,R11, R0 /* is it byte 1 */ BE b1 ANDCC R16,R11, R0 /* is it byte 2 */ BE b2 MOVW R11, -4(R9) /* store */ ANDCC R17,R11, R0 /* is it byte 3 */ BNE al2 JMP outb0: MOVB R0, -4(R9) JMP outb1: SRL $24, R11 MOVB R11, -4(R9) MOVB R0, -3(R9) JMP outb2: SRL $24,R11, R7 MOVB R7, -4(R9) SRL $16, R11 MOVB R11, -3(R9) MOVB R0, -2(R9) JMP outuna: MOVB (R10), R11 ADD $1, R10 MOVB R11, (R9) ADD $1, R9 SUBCC R0,R11, R0 BNE unaout: MOVW s1+0(FP),R7 RETURN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -