bgtпсевдо

bgt

псевдо
Асемблер RISC-V Посилання

lyszt.net охоплює bgt та інші інструкції RISC-V більш детально.

Опис

bgt — це гілка, яка спрацьовує, коли одне значення більше за інше. Її назва означає branch if greater than (гілка, якщо більше ніж). Наведена нижче інструкція виконує перехід до мітки, коли rs1 строго більше за rs2, порівнюючи їх як знакові значення.

bgt rs1, rs2, label

Жодна з шести основних гілок RISC-V не перевіряє умову «більше ніж». Питання «a більше за b» — це те саме питання, що й «b менше за a» з переставленими операндами. bgt — це псевдоінструкція, і асемблер переписує її як blt з оберненим порядком операндів. Апаратна частина залишається простішою, а порівняння все ще можна записати в напрямку, який читається природно. Основну гілку «менше ніж» описано в blt.

Вдавайтеся до bgt, коли умова природно читається в цьому напрямку, наприклад щоб перейти в інше місце, коли значення перевищує максимум, коли довжина більша за відведений для неї простір, або під час вибору більшого з двох шляхів.

У посібнику з RISC-V зазначено, що bgt, bgtu, ble і bleu можна синтезувати, обернувши операнди до blt, bltu, bge і bgeu.

Строго — це ключове слово. bgt не виконує розгалуження, коли два значення рівні. Щоб враховувати й рівні значення, використовуйте bge, яка розгалужується за умови «більше або дорівнює». Помилки на одиницю в циклах і перевірках зазвичай походять від цієї відмінності. Порівняння знакове. Для беззнакових даних та сама заміна застосовується до bltu.

Розгортається до

blt rs2, rs1, label

Асемблер замінює цю псевдоінструкцію реальною інструкцією або інструкціями, переліченими вище.

Приклад

li t0, 5
li t1, 2
bgt t0, t1, done   # 5 > 2, so jump to 'done'