Криво компилится?
Компилится все ровно, без ошибок и предупреждений.
Проблема: иногда случается так, что кусок кода как-то портит строки или что-то в этом роде(вместо их, полностью или частично, выводится на экран всякая гадость, хотя в hex-редакторе они нормальные!) даже если он не выполняется, а просто присутствует в модуле!
При добавлений флага компилятору -fomit-frame-pointer проблема частично разрешилась, такая ерунда любит возникать при повторе кода(даже пара строчек может повлиять!) например в разных функциях!
Что делать?
Цитата: artyom-tyanutov
Пишу что-то напоминающее ОС, на Си (используя gcc &ld)
Компилится все ровно, без ошибок и предупреждений.
Проблема: иногда случается так, что кусок кода как-то портит строки или что-то в этом роде(вместо их, полностью или частично, выводится на экран всякая гадость, хотя в hex-редакторе они нормальные!) даже если он не выполняется, а просто присутствует в модуле!
При добавлений флага компилятору -fomit-frame-pointer проблема частично разрешилась, такая ерунда любит возникать при повторе кода(даже пара строчек может повлиять!) например в разных функциях!
Что делать?
Компилится все ровно, без ошибок и предупреждений.
Проблема: иногда случается так, что кусок кода как-то портит строки или что-то в этом роде(вместо их, полностью или частично, выводится на экран всякая гадость, хотя в hex-редакторе они нормальные!) даже если он не выполняется, а просто присутствует в модуле!
При добавлений флага компилятору -fomit-frame-pointer проблема частично разрешилась, такая ерунда любит возникать при повторе кода(даже пара строчек может повлиять!) например в разных функциях!
Что делать?
У меня точно такая же ботва, но только решаю я это подбором адреса линковки.
А причина какова?
Цитата: artyom-tyanutov
И какой удачный?
А причина какова?
А причина какова?
сырой бинарник, скомпиленный на си я включаю в асмовый листинг с помощью incbin, чоответственно при запуске сегмент данных ищется не там, где нужно. а смещение у меня определяется размером файла.
И портачатся не все строки, как это было бы при запуске не по нужному смещению!
З.Ы.: может че ему еще надо кроме:
gcc -c -fomit-frame-pointer -Wall $(SOURCE)
ld --oformat binary -Ttext 200000 -o kernel.knl $(OBJECTS)
думаю, всеравно. у тя бинарник сырой, при загрузке в памяти я думаю идет сплошняком, и причина может в чем угодно, например стек перекрывает строки. у меня и такое было...
asm("movl $stack, %esp");
Убрал $ и все вроде нормально!
Спасиб!
З.Ы.: Посмотри пожалуйста эту тему: http://forum.codenet.ru/showthread.php?t=39948