Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Нашел у себя ляп компиляторный
Отправлено
mandigit (91.79.37.230) 16 сентября 2010, г. 15:42
в программе есть следующие файлы:
a.c
b.asm
c.c
в файле a.c вызов типа WriteStr("aaaa") работает
в файле c.c вызов типа WriteStr("cccc") выдает белеберду :)
разобрался - оказалось, в файле b.asm описаны переменные в сегменте NEAR_I (сегмент, в котором переменные инициализируются), а поскольку файл по алфавиту попал перед файлом c.c, то инициализатор компилятора пихает строку "cccc" в область памяти, занимаемыми переменными из файла b.asm, а вызов в файле c.c происходит с сылкой на область памяти, в которой не оказывается нужной строки, а находится случайная информация, которая и выводится.
Ошибка: неправильно указан тип сегмента в asm файле. Следует указать NEAR_Z.
Составить ответ | Вернуться на конференцию
Ответы