Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Криво компилится?

6.0K
03 июля 2007 года
artyom-tyanutov
107 / / 10.07.2006
Пишу что-то напоминающее ОС, на Си (используя gcc &ld)
Компилится все ровно, без ошибок и предупреждений.
Проблема: иногда случается так, что кусок кода как-то портит строки или что-то в этом роде(вместо их, полностью или частично, выводится на экран всякая гадость, хотя в hex-редакторе они нормальные!) даже если он не выполняется, а просто присутствует в модуле!
При добавлений флага компилятору -fomit-frame-pointer проблема частично разрешилась, такая ерунда любит возникать при повторе кода(даже пара строчек может повлиять!) например в разных функциях!
Что делать?
245
03 июля 2007 года
~ArchimeD~
1.4K / / 24.07.2006
Цитата: artyom-tyanutov
Пишу что-то напоминающее ОС, на Си (используя gcc &ld)
Компилится все ровно, без ошибок и предупреждений.
Проблема: иногда случается так, что кусок кода как-то портит строки или что-то в этом роде(вместо их, полностью или частично, выводится на экран всякая гадость, хотя в hex-редакторе они нормальные!) даже если он не выполняется, а просто присутствует в модуле!
При добавлений флага компилятору -fomit-frame-pointer проблема частично разрешилась, такая ерунда любит возникать при повторе кода(даже пара строчек может повлиять!) например в разных функциях!
Что делать?



У меня точно такая же ботва, но только решаю я это подбором адреса линковки.

6.0K
04 июля 2007 года
artyom-tyanutov
107 / / 10.07.2006
И какой удачный?
А причина какова?
245
04 июля 2007 года
~ArchimeD~
1.4K / / 24.07.2006
Цитата: artyom-tyanutov
И какой удачный?
А причина какова?



сырой бинарник, скомпиленный на си я включаю в асмовый листинг с помощью incbin, чоответственно при запуске сегмент данных ищется не там, где нужно. а смещение у меня определяется размером файла.

6.0K
04 июля 2007 года
artyom-tyanutov
107 / / 10.07.2006
Но я компилю в объектные файлы, а затем линкую по смещению в 2 метра без всяких инкбинов!
И портачатся не все строки, как это было бы при запуске не по нужному смещению!
З.Ы.: может че ему еще надо кроме:
gcc -c -fomit-frame-pointer -Wall $(SOURCE)
ld --oformat binary -Ttext 200000 -o kernel.knl $(OBJECTS)
245
04 июля 2007 года
~ArchimeD~
1.4K / / 24.07.2006
думаю, всеравно. у тя бинарник сырой, при загрузке в памяти я думаю идет сплошняком, и причина может в чем угодно, например стек перекрывает строки. у меня и такое было...
6.0K
04 июля 2007 года
artyom-tyanutov
107 / / 10.07.2006
Кажется нашел причину-стояло
asm("movl $stack, %esp");
Убрал $ и все вроде нормально!
Спасиб!
З.Ы.: Посмотри пожалуйста эту тему: http://forum.codenet.ru/showthread.php?t=39948
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог