vak: (Знайка)
[personal profile] vak
Сам я горячий поклонник RISC-V и считаю, что это лучшая компьютерная архитектура, придуманная человечеством. Но для программиста, насколько революционные изменения привнёс RISC-V по сравнению с предшественниками? Давайте сравним хотя бы с тем же PowerPC. Тоже ведь неплохая была архитектура. Возьмём простую программу на Си, скажем суммирование массива.
int sum(int *arr, int n) {
    int s = 0;
    for (int i = 0; i < n; i++) {
        s += arr[i];
    }
    return s;
}
Перепишем эту программу на ассемблеры RISC-V и PowerPC, и сравним.
# a0 = arr
# a1 = n
# return value in a0

sum:
    li      t0, 0          # s = 0
    li      t1, 0          # i = 0

loop:
    bge     t1, a1, done   # if i >= n, exit

    slli    t2, t1, 2      # offset = i * 4
    add     t3, a0, t2     # addr = arr + offset
    lw      t4, 0(t3)      # load arr[i]

    add     t0, t0, t4     # s += arr[i]
    addi    t1, t1, 1      # i++

    j       loop

done:
    mv      a0, t0         # return s
    ret
# r3 = arr
# r4 = n
# return value in r3

sum:
    li      r5, 0          # s = 0
    li      r6, 0          # i = 0

loop:
    cmpw    r6, r4         # compare i, n
    bge     done           # if i >= n, exit

    slwi    r7, r6, 2      # offset = i * 4
    add     r8, r3, r7     # addr = arr + offset
    lwz     r9, 0(r8)      # load arr[i]

    add     r5, r5, r9     # s += arr[i]
    addi    r6, r6, 1      # i++

    b       loop

done:
    mr      r3, r5         # return s
    blr                    # return
Не то чтобы много различий можно углядеть. Условный переход делается в одну команду вместо двух. Остальное чисто разница мнемоник. Выходит, не такой уж оригинальный этот RISC-V как его превозносят.