Pull to refresh
272
0
Владимир @32bit_me

Программист

Send message

Ничего особенного я в этих советах не вижу. Готовьтесь к каждому интервью, внимательно изучите требования вакансии, задавайте вопросы - что не так?

Я не буду разводить бессмысленных дискуссий, но данные относительно pc не хранятся ни в одной архитектуре. Предлагаю на этом закончить.

Но почему данные должны храниться относительно pc? Есть инструкция вида LW rd, imm(rs). Если мы загружаем константу (а мы же говорим о константах, да?), то они лежат обычно в секции .rodata, по фиксированному адресу.

Кэш ускоряет работу с памятью, но хорошей практикой считается как можно меньше трогать память, и выполнять всё, что можно, на регистрах. Отсюда и замена lw/ld длинными цепочками команд, вычисляюших константы в рантайме.

Загрузка из памяти, это одна инструкция. В современном мире загрузка из памяти - это самая медленная операция, и может занимать сотни тактов. Зависит от попадания в кэш.

64-битная версия выглядит практически так же, но добавлены команды для загрузки и сохранения 64-битных чисел и некоторые другие.
Пример:

long long foo() {

    return 0x1122334455667788LL;

}
foo():                                # @foo()
        lui     a0, 1097
        addiw   a0, a0, -1843
        slli    a0, a0, 14
        addi    a0, a0, 1109
        slli    a0, a0, 12
        addi    a0, a0, 1639
        slli    a0, a0, 12
        addi    a0, a0, 1928
        ret

Здесь в a0 загружается 64-битная константа. Главным образом используются сложения и сдвиги. Это несколько громоздко, но иначе придётся делать загрузку константы из памяти, а это нежелательно.

Сейчас на ядро Risc V перешли в своей продукции компании MIPS, Western Digital, и ряд других крупных компаний имеют такие планы.

Пока на рынке мало микросхем, но кое-что есть. Есть аналоги STM32 на RISCV, есть чипы SiFive, скоро выйдет одноплатник от Beaglebone.

Нет, в железо ничего не переведено, это остаётся просто соглашением, и вы можете использовать какое-то другое соглашение для своих проектов. Однако это соглашение является стандартным и изменять его без необходимости не нужно.

Это на самом деле очень удобно, его можно использовать везде, где один из операндов равен нулю. Один из наиболее очевидных примеров использования: add rd, rs, zero - переносит rs в rd, что заменяет команду mov, необходимую в других архитектурах.

Что-то даже не знаю, кому в начале 90-х было интересно Радио 86 РК, когда спектрумы не собирал только ленивый.
Насколько я знаю, нет.

В оригинале было слово ill-tempered, я затрудняюсь перевести его дословно. Будем считать, что Бендер безумен в хорошем смысле.

Ребята, которые пилят мультиклет, нахамили мне в лицо, когда я предложил запилить компилятор на LLVM. В их поделии нет ничего такого, что нельзя было бы запилить в LLVM. Если вы посмотрите в существующие бэкенды LLVM, там есть действительно нетипичные архитектуры, и ничего, всё работает.
Устройства левитации, как у барона Харконена.
В полуляхах, конечно же.
Аж зашкаливает:
image

Information

Rating
Does not participate
Date of birth
Registered
Activity