📄 strcpy.s
字号:
TEXT strcpy(SB), $0 MOVW s2+4(FP),R2 /* R2 is from pointer */ MOVW R1, R3 /* R3 is to pointer *//* * align 'from' pointer */l1: AND $3, R2, R5 ADDU $1, R2 BEQ R5, l2 MOVB -1(R2), R5 ADDU $1, R3 MOVB R5, -1(R3) BNE R5, l1 RET/* * test if 'to' is also alligned */l2: AND $3,R3, R5 BEQ R5, l4/* * copy 4 at a time, 'to' not aligned */l3: MOVW -1(R2), R4 ADD $4, R2 ADD $4, R3 SRL $24,R4, R5 MOVB R5, -4(R3) BEQ R5, out SRL $16,R4, R5 AND $0xff, R5 MOVB R5, -3(R3) BEQ R5, out SRL $8,R4, R5 AND $0xff, R5 MOVB R5, -2(R3) BEQ R5, out AND $0xff,R4, R5 MOVB R5, -1(R3) BNE R5, l3out: RET/* * word at a time both aligned */l4: MOVW $0xff000000, R7 MOVW $0x00ff0000, R8l5: ADDU $4, R3 MOVW -1(R2), R4 /* fetch */ ADDU $4, R2 AND R7,R4, R5 /* is it byte 0 */ AND R8,R4, R6 /* is it byte 1 */ BEQ R5, b0 AND $0xff00,R4, R5 /* is it byte 2 */ BEQ R6, b1 AND $0xff,R4, R6 /* is it byte 3 */ BEQ R5, b2 MOVW R4, -4(R3) /* store */ BNE R6, l5 JMP outb0: MOVB $0, -4(R3) JMP outb1: SRL $24, R4 MOVB R4, -4(R3) MOVB $0, -3(R3) JMP outb2: SRL $24,R4, R5 MOVB R5, -4(R3) SRL $16, R4 MOVB R4, -3(R3) MOVB $0, -2(R3) JMP out
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -