char *my_strcpy(char *dest, char *src) { char *cpy = dest; while(*src) { *dest = *src; ++src; ++dest; } *dest = *src; return(cpy); } .file 1 "strcpy.c" # 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 my_strcpy .text .loc 1 2 .ent my_strcpy my_strcpy: .frame $fp,16,$31 # vars= 8, regs= 1/0, args= 0, extra= 0 .mask 0x40000000,-8 .fmask 0x00000000,0 subu $sp,$sp,16 sw $fp,8($sp) move $fp,$sp sw $4,16($fp) sw $5,20($fp) lw $2,16($fp) sw $2,0($fp) $L2: lw $2,20($fp) lb $3,0($2) bne $3,$0,$L4 j $L3 $L4: lw $2,16($fp) lw $3,20($fp) lbu $4,0($3) sb $4,0($2) lw $3,20($fp) addu $2,$3,1 move $3,$2 sw $3,20($fp) lw $3,16($fp) addu $2,$3,1 move $3,$2 sw $3,16($fp) j $L2 $L3: lw $2,16($fp) lw $3,20($fp) lbu $4,0($3) sb $4,0($2) lw $2,0($fp) j $L1 $L1: move $sp,$fp # sp not trusted here lw $fp,8($sp) addu $sp,$sp,16 j $31 .end my_strcpy .file 1 "strcpy.c" # 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 my_strcpy .text .loc 1 2 .ent my_strcpy my_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 move $6,$4 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: .set noreorder lbu $2,0($5) #nop .set reorder sb $2,0($4) move $2,$6 addu $sp,$sp,16 j $31 .end my_strcpy