Carmi Merimovich

Carmi Merimovich

Personal Site

strcpy(char *x, char *y) {
    unsigned int i = 0;

    goto l:
    do {
        i++;
    l:
    } while ((x[i] = y[i]) != 0);
}
strcpy:
    add    t0, x0, x0   // i = 0
    beq     zero, zero, L
loop:
    addi    t0, t0, 1   // i += 1
L:
    add     t1, a0, t0  // x + i
    add     t2, a1, t0  // y + i
    lb      t2, 0(t2)   // y[i]
    sb      t2, 0(t1)   // x[i] = y[i]
    bne     t2, zero, loop   // if (y[i] != 0) goto loop

    jalr    zero, 0(ra)