Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; 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.


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 47:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru