Использование встроенных функций идентично использованию ассемблерных инструкций чтений/модификации системных регистров, однако более предпочтительно в программе на С/С++, чем ассемблерные вставки.
Для работы с built-in функциями необходимо подключить заголовочный файл sysreg.h.
Функции доступа к системным регистрам аналогичны основным инструкциям ассемблера, предназначенным для этих же целей, например:
__builtin_ | Asm аналог | Описание |
---|---|---|
int sysreg_read(const int SR_number) | = sysreg | Чтение системного регистра sysreg |
sysreg_write(const int SR_number, const int new_value) | sysreg = | Запись системного регистра sysreg |
sysreg_bit_clr(const int SR_number, const int bit_mask) | bit clr sysreg bitmask | Стирание битов в sysreg по маске |
sysreg_bit_set(const int SR_number, const int bit_mask) | bit set sysreg bitmask | Установка битов в sysreg по маске |
sysreg_bit_tgl(const int SR_number, const int bit_mask) | bit tgl sysreg bitmask | Инверсия битов в sysreg по маске |
int sysreg_bit_tst(const int SR_number, const int bit_mask) | bit tst sysreg bitmask | Возвращает (sysreg & bit_mask) == bit_mask |
Для всех функций есть варианты с _nop на конце функции. Использование такого варианта приводит к генерации команды nop после инструкции bit…