/* w3probe.c — явная проба подхода A для --w3. * * main (W1/W2) зовёт функцию w3_show() в W3, которая печатает свой * собственный адрес (должен быть 0xC0xx) через printf. Затем main * проверяет прямой вызов с возвратом и ЧИСТО выходит в DSS (return 0), * чтобы вернулось приглашение шелла. */ #include #include extern const uint8_t w3_sig; /* rodata в W3 */ extern uint8_t w3_probe(uint8_t x); /* код в W3, прямой вызов */ extern void w3_show(void); /* код в W3, зовёт printf */ int main(void) { printf("HOME: main @ 0x%04X | w3_probe @ 0x%04X | w3_show @ 0x%04X\n", (unsigned)&main, (unsigned)&w3_probe, (unsigned)&w3_show); w3_show(); /* W3-код печатает свой адрес */ printf("HOME: w3_probe(0x42) = 0x%02X (expect 0xBD)\n", (unsigned)w3_probe(0x42)); printf("HOME: done, exiting to DSS.\n"); return 0; /* чистый выход → приглашение DSS */ }