|
Есть внешнее ОЗУ 64Кбайта. Проц - Мега128, в XCL прописан внешний сегмент (внешняя микросхема ОЗУ 64Кх8):
-Z(DATA)EXTRAM=1100-FFFF
в этом же сегменте лежат 32 буфера по 0х778 байт:
__no_init char IOBuf [32][0x778] @ "EXTRAM";
Кладем байт в первую ячейку, вторуи и самую последнюю самого последнего буфера:
IOBuf [0][0] = 1;
IOBuf [0][1] = 1;
IOBuf [31][0x777] = 1;
и получаем такую фигню:
308 IOBuf [0][0] = 1;
\ 00000000 E001 LDI R16,1
\ 00000002 9300.... STS IOBuf,R16
309 IOBuf [0][1] = 1;
\ 00000006 9300.... STS (IOBuf + 1),R16
310 IOBuf [31][0x777] = 1;
\ 0000000A 9300.... STS (IOBuf - 4353),R16
На последнее "-4353" линкер долго и много ругается матерными словами (что на мой взгляд справедливо) - " Address out of range. Valid range is 0 to 65535 (0xFFFF)."
Вот я и встал враскоряку... :-(
Что за ерунда? Вроде все на месте, с какого бодуна компилер сует эти "-4353"?
E-mail: info@telesys.ru