оптимальнее и быстрее, при учёте того, что функций будет >40. (Это для interrupt-a).
use16
fn1:
iret
fn2:
iret
fn3:
iret
fn4:
iret
fn_error:
iret
switch:
cmp ax, 4
jae fn_error
add ax, fn
jmp ax
fn: dw fn1, fn2, fn3, fn4
или
use16
fn1:
iret
fn2:
iret
fn3:
iret
fn4:
iret
fn_error:
iret
switch:
cmp ax, 0
je fn1
cmp ax, 1
je fn2
cmp ax, 2
je fn3
cmp ax, 3
je fn4
jmp fn_error
А зачем у тебя так много одинаковых iret?
это как пример, могу убрать эти функции.
По идее первый вариант должен быть быстрее
Я согласен, что по идее, но что насчёт скорости cmp и предсказателя ветвей?
А почему 16 бит
Так у тебя и там и там CMP
Вы читали, что я писал в начале?
Повторяюсь, для примера.
многочисленные проверки всегда медленнее, чем проверка на границы и переход по jmptable
Обсуждают сегодня