Carmi Merimovich

Carmi Merimovich

Personal Site

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

    while ((x[i] = y[i]) != 0) {
        i++;
    }
}
strcpy:
    add    t0, x0, x0   // i = 0
loop:
    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]
    beq     t2, x0, done   // if (y[i] == 0) goto done
    addi    t0, t0, 1   // i += 1
    beq     x0, x0, loop
done:
    jalr    zero, 0(ra)