ori
lyszt.net охоплює ori та інші інструкції RISC-V більш детально.
Формат кодування
Опис
ori виконує побітове АБО з константою. Його зв'язок з or такий самий, як у andi з and. Літера i означає immediate — фіксоване значення, закодоване в інструкції. ori виконує АБО регістра з цією константою, а не АБО двох регістрів. Правило АБО не змінюється. Бітова позиція в результаті дорівнює 1, коли будь-який біт на цій позиції дорівнює 1, тому константа встановлює вибрані вами біти. Сторінка or описує цю операцію.
Форма ori наведена нижче. Вона виконує АБО значення в rs1 з константою imm і записує результат у rd.
ori rd, rs1, imm
АБО встановлює біти й залишає решту як були, тому ori вмикає конкретні прапорці, коли ви знаєте, які саме потрібні. Наступний рядок вмикає третій біт справа в t0 і залишає всі інші біти без змін. Префікс 0b позначає двійкову константу.
ori t0, t0, 0b100
Регістри конфігурації, прапорці дозволів і слова стану містять незалежні біти вмикання та вимикання, і ori вмикає вибрані з них однією інструкцією без регістра маски.
Посібник RISC-V зазначає, що 12-бітне безпосереднє значення розширюється зі знаком до 32 бітів перед операцією. Тому від'ємна константа має всі старші біти встановленими, і ori з -1 встановлює всі біти результату.
Константа обмежена 12 бітами, як і у випадку з andi та addi. Щоб встановити біти поза цим діапазоном, завантажте ширшу маску в регістр за допомогою li і використайте or.
Приклад
li t0, 0 ori t1, t0, 0xf # t1 = 0xf
