Код
LDR R1, =os_context_switch_hook
BLX R1
BLX R1
Но недавно я наткнулся на сайт, где прочитал, что это делается проще:
Код
bl os_context_switch_hook
Первый вариант компилится во что-то вроде:
Код
ldr r1, [pc, #76]
blx r1
...
.word 0x080024a5
blx r1
...
.word 0x080024a5
, а второй вариант - в
Код
bl 80024a5
.Второй вариант короче, быстрее, и не сбивает конвейер. (С ним переключатель контекста scmRTOS выполняется за 60 тактов вместо 70-ти).
Внимание, вопрос: почему везде используется первый вариант?