История изменений
Исправление
Legioner,
(текущая версия)
:
А как тогда писать программы под железо, где по адресу 12345 находятся регистры MMIO какого-нибудь устройства?
Через какой-нибудь #define WRITE_BYTE(addr, value) __gcc_builtin_write_byte(addr, value)
А ещё лучше так:
uint8_t *device = __gcc_builtin_get_pointer(0x12345, 0x10)
И дальше компилятор будет вставлять проверки, что ты обращаешься по адресам от 0x12345 до 0x12355, и не дальше. А при попытке записать device[0x10] = 0
программа упадёт а не пойдёт писать куда не положено.
Исходная версия
Legioner,
:
А как тогда писать программы под железо, где по адресу 12345 находятся регистры MMIO какого-нибудь устройства?
Через какой-нибудь #define WRITE_BYTE(addr, value) __gcc_builtin_write_byte(addr, value)