char *strcpy(char *dest, char *src) { while(*src) { *dest = *src; ++dest; ++src; } } # Cc1 defaults: # -mgas -mgpOPT # Cc1 arguments (-G value = 8, Cpu = default, ISA = 1): # -quiet -dumpbase -o gcc2_compiled.: __gnu_compiled_c: .text .align 2 .globl strcpy .text .loc 1 4 .ent strcpy strcpy: .frame $fp,8,$31 # vars= 0, regs= 1/0, args= 0, extra= 0 .mask 0x40000000,-8 .fmask 0x00000000,0 subu $sp,$sp,8 sw $fp,0($sp) move $fp,$sp sw $4,8($fp) sw $5,12($fp) $L2: lw $2,12($fp) lb $3,0($2) bne $3,$0,$L4 j $L3 $L4: lw $2,8($fp) lw $3,12($fp) lbu $4,0($3) sb $4,0($2) lw $3,8($fp) addu $2,$3,1 move $3,$2 sw $3,8($fp) lw $3,12($fp) addu $2,$3,1 move $3,$2 sw $3,12($fp) j $L2 $L3: $L1: move $sp,$fp # sp not trusted here lw $fp,0($sp) addu $sp,$sp,8 j $31 .end strcpy ------------------------------- # Cc1 defaults: # -mgas -mgpOPT # Cc1 arguments (-G value = 8, Cpu = default, ISA = 1): # -quiet -dumpbase -O4 -o gcc2_compiled.: __gnu_compiled_c: .text .align 2 .globl strcpy .text .loc 1 4 .ent strcpy strcpy: .frame $sp,16,$31 # vars= 16, regs= 0/0, args= 0, extra= 0 .mask 0x00000000,0 .fmask 0x00000000,0 .set noreorder lbu $3,0($5) .set reorder .set noreorder lb $2,0($5) .set reorder subu $sp,$sp,16 beq $2,$0,$L8 $L9: addu $5,$5,1 sb $3,0($4) .set noreorder lbu $3,0($5) .set reorder .set noreorder lb $2,0($5) .set reorder addu $4,$4,1 bne $2,$0,$L9 $L8: addu $sp,$sp,16 j $31 .end strcpy