mandigit (22.09.2010 15:37, просмотров: 82) ответил mandigit на инициализация глобальных переменных в связке си+асм?
Все оказалось не просто: необходимо положить значения, которыми должна инициализироваться переменная во флеш память и дать компилятору знать, что требуется инициализация, если в си коде нигде такая инициализация не применялась. В результате, работающий код выглядит так:
RSEG NEAR_I
REQUIRE `?<Segment init: NEAR_I>`
ms20_use DS8 1
REQUIRE `?<Initializer for ms20_use>`
RSEG NEAR_ID
`?<Initializer for ms20_use>`:
DB 0xFF
EXTERN ?need_segment_init
RSEG INITTAB:CODE:NOROOT(0)
`?<Segment init: NEAR_I>`:
DW SFE(NEAR_I) - SFB(NEAR_I)
DW SFB(NEAR_I)
DW SFB(NEAR_ID)
REQUIRE ?need_segment_init