/* w3res.c — резидентный модуль окна W3 (проба подхода A, явная версия). * * Компилируется с --codeseg W3CODE --constseg W3CODE (БЕЗ --dataseg), * линкуется по -Wl-b_W3CODE=0xC000. Здесь только код + rodata. */ #include #include /* rodata в W3 (для проверки, что область реально по 0xC000). */ const uint8_t w3_sig = 0x5A; /* Функция, живущая в W3. Печатает СВОЙ адрес через printf — а printf * лежит в libc (_CODE = W1/W2). Тем самым проверяем оба направления: * W3-код исполняется по 0xC0xx И умеет звать код в W1/W2 обычным call'ом. */ void w3_show(void) { printf("W3 : w3_show @ 0x%04X | w3_sig @ 0x%04X = 0x%02X\n", (unsigned)&w3_show, (unsigned)&w3_sig, (unsigned)w3_sig); } /* Прямой вызов с возвратом значения: x^0xFF. */ uint8_t w3_probe(uint8_t x) { return (uint8_t)(x ^ 0xFF); }