Цитата
Как заставить Кеил построить для меня всю карту памяти для всего проекта? Что, куда она положила по каким адресам? Хочу найти перекрестные ссылки.
Полная карта памяти находится в файле с расширением .М51. Но я бы посоветовал вам другой способ. Установите прерывание по записи в данную ячейку памяти. Debug->Breakpoints, в поле Expression введите что-то типа d:0x73 и установите галочку в Write (думаю вы это знаете, но на всякий случай). После этого при каждой записи в эту ячейку вы увидите место в программе где она изменяется.
Цитата
Эти глюки у меня проявляются в порче локальных переменных в функции при вызове других фуекций, т.к. компилятор почему-то выделяет для временных операций адреса тех-же переменных...
Имеется ввиду при вызове из одной функции другой функции? Потому что в любом другом случае компилятор имеет полное право использовать те же ячейки памяти для другой функции, не сохраняя их в стек. На то они и локальные.
Со своей стороны могу посоветовать следующее. Если вы не хотите объявлять переменную в качестве глобальной, то объявите ее через static. При этом компилятор если и будет использовать эту ячейку памяти, то при этом обязательно сохронит ее в стек. Только не совмещайте объявление переменной и ее инициализацию, т.к. переменные static инициализируются один раз.
Цитата
Какие настройки заставляют Keil раскидывать данные линейно, последовательно для ВСЕГО проекта?
Посмотрите в С51.pdf подраздел Linker Locaition Controls.
Еще есть вероятность что ошибки с переменными связаны с использованием их в подпрограммах прерывания. Поскольку прерывание может возникнуть в любой момент, то компилятор не может гарантированно отследить правильность использования переменных. На этот случай при объявлении существует дополнительная директива, но сейчас я не помню какая, так что гляньте сами.
P.S. По своему опыту скажу, что ошибки компилятора маловероятны. Я делал проекты где использовалась только внутренняя память, и не было случая, где была бы вина компилятора, а не моя собственная от недопонимания языка или возможностей компилятора.
YAM, а нельзя прислать кусок программы с глюком, или целиком? Хотелось бы покопаться с этой проблемой.