Как-то, зачем-то полез посмотреть кейловский стартап файл для какого-то STM проца. При детальном просмотре увидел некоторые детали, смысл которых мне не на 100% понятен..
вот стандартная реакция на прерывания
Код
NMI_Handler PROC
EXPORT NMI_Handler [WEAK]
B .
ENDP
HardFault_Handler\
PROC
EXPORT HardFault_Handler [WEAK]
B .
ENDP
EXPORT NMI_Handler [WEAK]
B .
ENDP
HardFault_Handler\
PROC
EXPORT HardFault_Handler [WEAK]
B .
ENDP
WEAK - это обозначение что данный обработчик самый последний, если в тексте программы не найдется получше.
"B ." - это переход по кругу, на тот же адрес на котором этот бранчь
Вот тут первая задачка, я вдруг понял что не знаю документа где "B (точка)" значит переход по этому же адресу. Это чисто кейловская фича? Где описание команды в таком синтаксисе?
Вторая загадка почему NMI_Handler, а HardFault_Handler\, что авторы хотели показать этим последним обратным слешем?
не то чтобы без ответов жить не могу, просто интересно стало...
И последняя полу-загадка, кусок кода в конце стартапе
Код
IMPORT __use_two_region_memory
....
....
импортим и никак не используем, правильно я понимаю что если __use_two_region_memory не будет объявлено во внешних ресурсах, то еще на этапе компиляции я получу ошибку. То есть это как бы такая защита?