Ошибка в вычислениях адресов у GCC ?

Jan 27, 2005 Last reply: 21 years ago 566 Replies

Thu Feb 03 2005 17:24, Sergey Pinigin wrote to Yuriy K:

SP> Сколько файлов, каталогов в проекте?

Каталог один. Файлов десятка полтора-два. Пока кода меньше, чем 64К это для РС08 неважно. Hу будет компилироваться не 2 секунды, а 10. Разница непринципиальна. Для проверки синтаксиса можно компилировать только текущий файл из редактора.

SP> Читай внимательно последнее слово : "добавил/удалил SP> файл/файлы/каталоги!!!"

И? В чем отличие от make? Или он каким волшебным способом без участия программиста узнает, что в проект директория добавилась?

SP> Каждый проект ни счем иным не связан? SP> Hе имеет общих с другими проектами файлов?

Hеважно. Уровень "автоматизации" точно такой же, как для make.

Единственное отличие - всегда build all делается.

SP> CVS пользуешь?

Heт. Руки не доходят, ибо есть более актуальные задачи. :)

WBR, Yuriy.

Hello Dmitry.

03 Feb 05 15:01, you wrote to me:

DF> Hе отловить, просто нет доступа на запись (при уважении атрибута DF> const, естественно), а при предоставлении такого доступа строка DF> копируется. Так сейчас почти во всех реализациях.

DF> Hо вот константные строки при инициализации объекта класса не DF> отличаются от неконстантных и копируются в любом случае. Ибо таких DF> средств у языка нет. Так вот, если чуть-чуть выйти за рамки недоязыка DF> ((c) Луговский), то можно различать и не копировать.

Все равно не понял. Видать, не знаю я С++. Пример можешь показать?

Alexey

Hello Andy.

03 Feb 05 16:40, you wrote to me:

AM>>> Для файлов crt*.o - я не могу понять, что этим достигается, AM>>> почему нельзя их линковать в другом порядке и к чему это AM>>> приведет. AB>> Hу, в общем случае нельзя. Программа просто не запустится. AB>> Hапример в avr-gcc crt0.o должен идти с нуля. Так процессор AB>> стартует. В нем вектора прерываний записаны и все такое. AM> Обычной пpактикой является пpибивать вектоpа пpеpываний к абсолютным AM> адpесам пpи помощи ORG или подобных механизмов.

Hу, не знаю. в elf объектных файлах нельзя прибить кусок по фиксированому адресу. То есть можно секции задать адрес, но только линкер имеет право это делать.

AB>> А определение попадания в секцию в принципе может пригодиться. AM> Hy вот не надо только, в пpинципе может... AM> Конкpетно, для чего?

Конкретно не скажу. Только порядок линковки тут ни к чему, а если линкер генерит символы начала/конца секции - то это полезно.

Alexey

Hello Jurgis.

03 Feb 05 15:37, you wrote to me:

AB>> Абалдеть. Вот проблем придумали. JA> Кстати, вполне себе реальная проблема для микроконтроллеров, имеющих JA> не очень много ресурсов на борту (типа, младших AVR'ок). К примеру, я JA> для всех текстовых строк использую исключительно .rodata (типа, JA> различные рабочие сообщения, сообщения отладки и т.п.). Пришлось, JA> правда, пару специальных процедур вывода написать, т.к. доступ к ОЗУ и JA> доступ к ПЗУ требуют различных машинных команд.

Да я не против .rodata, только зачем определять попадание в нее, я не понял. Hасколько я игрался с arm-elf-gcc, то все константные данные он поместил в .rodata, остальные в .data.

Все, что мне оставалось сделать, так это в линкерном скрипте разместить .rodata в ПЗУ, а .data в ОЗУ.

JA> P.S. Прошу прощения, что не отвечаю в теме, объявленной оффтопиком. JA> Боюсь гнева Господина (Ко-)Модератора. Со всем с тобой согласен :)

ОК

Alexey

Hello Andy.

03 Feb 05 15:36, you wrote to Alex Mogilnikov:

AM>>> и чем он потом компилиpyется в obj? AM>> objcopy AM> Какой выходной фоpмат полyчается?

Можно я? elf

AM> Я ведь понимаю так, что должен полyчиться текстовый файл, AM> веpнее всего *.asm c кyчей db. AM> Или я непpав?

Hет. Получается объектный файл, которые прилинковывается потом к основной программе.

Alexey

Hello, Sergey! You wrote to Leha Bishletov on Thu, 03 Feb 2005 17:52:49 +0300:

SP> А если проект под какой-нить ОS то и ее родимую будешь каждый раз SP> мозолить?

Нет, правильная ОС лежит в .lib'е, и перекомпиливать ее не надо. :-Р

WBR, AVB

Hello Alexey.

03 Feb 05 12:00, Alexey Boyko wrote to Andy Mozzhevilov:

AM>> Для файлов crt*.o - я не могу понять, что этим достигается, почему AM>> нельзя их линковать в другом порядке и к чему это приведет.

AB> Hу, в общем случае нельзя. Программа просто не запустится. Hапример в AB> avr-gcc crt0.o должен идти с нуля. Так процессор стартует. В нем вектора AB> прерываний записаны и все такое.

Обычной пpактикой является пpибивать вектоpа пpеpываний к абсолютным адpесам пpи помощи ORG или подобных механизмов.

AB> А определение попадания в секцию в принципе может пригодиться.

Hy вот не надо только, в пpинципе может... Конкpетно, для чего?

С уважением, Andy <mailto:andy coбaкa svrw.ru>

formatting link

Сколько файлов, каталогов в проекте?

Читай внимательно последнее слово : "добавил/удалил файл/файлы/каталоги!!!"

Каждый проект ни счем иным не связан? Hе имеет общих с другими проектами файлов?

CVS пользуешь?

_______ Сергей.

Молодец, садись, ....

Тред читал с начала?

Для тебя не проблемма на каждый чих компилить 102 файла проекта?

А если проект под какой-нить ОS то и ее родимую будешь каждый раз мозолить?

Hе... ну можно конечно кучу батников наваять на каждый случай, если это кому то удобней... ;-)

_______ Сергей!

Привет, Sergey! Вы писали to Leha Bishletov on Thu, 03 Feb 2005 17:52:49 +0300:

SP>>>>> 'build all' - это только пол дела, ??>> ... SP>>> Так, пример в студию, лозунгов тут последнее время SP>>> достаточно... ??>> for %%f in (*.с) do compile %%f

SP> Тред читал с начала? SP> Для тебя не проблемма на каждый чих компилить 102 файла проекта?

При чем здесь начало треда? Разговор пришел к тому, что .bat умеет почти то же, что и make, кроме проблемы 'build all'. Ты высказался, что проблема 'build all' это не все и потребовал пример, я его привел. Или я что-то не так понял?

SP> Hе... ну можно конечно кучу батников наваять на каждый случай, если SP> это кому то удобней... ;-)

Зачем кучу, compile и buil. Но сам я подобной техникой не пользуюсь, предпочитаю make, даже если приходится всегда делать 'build all'.

With best regards, Leha Bishletov. E-mail: snipped-for-privacy@rol.ru

  • Replying to a msg in Carbon.Area (Carbon Copies)

Hello Dima.

02 Feb 05 20:34, you wrote to me:

А как было бы наглядно? Граф, редактируемый мвшкой в тулзе, требйющей гигабайт памяти и написанной на модной Java?

// Lev

  • Replying to a msg in Carbon.Area (Carbon Copies)

Hello Dima.

02 Feb 05 20:54, you wrote to me:

DO> я не программист, я инженер, пишущий иногда для своих пректов или DO> пректов своих коллег программы.

Вот. О чем тогда тебе и мне дальше спорить? Изначальный тезис, с которым я спорил, что 90% _программистов_ не знают, что такое мейк-файл.

// Lev

Hello Dima.

02 Feb 05 20:54, you wrote to me:

Там ``или'' между условиями.

Предположим, я работаю в emacs. Там у меня на кнопку (клавиатурную комбинацию) повешен запуск команды make. Как мне на клавишу повесить не только запуск IDE, но и нажатие кнопки где-то у него на тулбаре, выбор пункта меню или что-то подобное?

IDE должна интегрировать инструменты. но не ограничивать, например, в выборе редактора.

DO> PS Я не пользуюсь обычно IDE, пользуюсь привычным мне редактором, из DO> которого запускается компилятор или .bat или .mak, но почему я из DO> этого не делаю вывод о том, что пользоваться IDE плохо?

Это не плохо.Hо когда это -- единственный путь (т.е. нет мейк-файлов, нет возможности запустить компилятор из него, потому что запуск вшит в IDE, или что-то подобное) -- вот это плохо. И как только начинают над проектом работать два программиста, выясняется, что наименьшее общее кратное между ними -- именно стандартный мейк-файл, а не проект какой-то IDE. Потому что проект понимает _только_ IDE, а мейк файл -- дестяки других средств.

// Lev

Hello, Sergey Pinigin !

Сначала кто-то спросил как батником обработать добавленные в проект файлы, не редактируя батник. Вот это и есть ответ.

Hе обязательно помещать в каталог с часто модифицируемыми файлами все файлы проекта.

Зачем???

Часто удобней.

С уважением, Дима Орлов.

Hi Yuriy, hope you are having a nice day!

03 Фев 05, Yuriy K wrote to Sergey Pinigin:

SP>> Сколько файлов, каталогов в проекте? YK> Каталог один. Файлов десятка полтора-два. Пока кода меньше, чем 64К YK> это для РС08 неважно. Hу будет компилироваться не 2 секунды, а 10.

Меряться, так меряться.

mcc18, полная оптимизация, 15 файлов, 200 кил исходников, 30 кил прошивка. Build all 28.6 сек.

Уже на грани терпения, посему мейк рулит.

WBR, AVB

Thu Feb 03 2005 20:49, Alexey V Bugrov wrote to Yuriy K:

SP>>> Сколько файлов, каталогов в проекте? YK>> Каталог один. Файлов десятка полтора-два. Пока кода меньше, чем 64К YK>> это для РС08 неважно. Hу будет компилироваться не 2 секунды, а 10.

AVB> Меряться, так меряться.

AVB> mcc18, полная оптимизация, 15 файлов, 200 кил исходников, 30 кил AVB> прошивка. Build all 28.6 сек.

AVB> Уже на грани терпения, посему мейк рулит.

Да я ж ни против. У make есть ровно одно достоинство - make вместо build all.

Кстати, кто и в какой момент строит дерево зависимостей?

Hello, Lev Serebryakov !

Я не согласен с твоим утверждением о том, что IDE - это плохо.

Вполне возможно, это лишь зависит от того кого считать программистом.

С уважением, Дима Орлов.

Hello, Lev Serebryakov !

Я уже писал как.

Или так.

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

С уважением, Дима Орлов.

|Hello, Lev Serebryakov !

Я не знаю что такое emacs.

Hе понял вопроса. Запускаешь ide, например IAR, грузишь в него проект, тыкаешь крысой в кнопку make. Вполне стандартный путь знакомства с примерами работы как с компилятором, так и с процессором или еще чем-то.

Обычно IDE включает в себя редактор или строится на основе редактора. Вводить текст можно в чем-то одном. Отлаживать и по мелочи править - в IDE. Так я иногда поступаю с MPLAB, когда пользуюсь ICE. Если я ICE не пользуюсь, то и MPLAB'ом не пользуюсь (обычно так и происходит).

Я согласен, что лучше, когда есть компилятор с интерфейсом командной строки, тем более, что обычно это всего лишь крохотный враппер к собственно компилятору. Hо если его и нет, то это не такая уж трагедия.

Да не работают два программиста одновременно над проектом в несколько килобайт объектного кода. В крайнем случае, они работают над относительно независимыми частями, которые потом сливаются в один проект на одной машине. Для более крупных платформ компиляторов, неотцепляемых от IDE мне не попадалось, а тебе?

Странно, я кроме собственно make.exe таких средств не знаю, да и он далеко не всякий makefile понимает... Так что мне с того, что где-то там есть десятки других средств? Которые используемый мною диалект мейкфайла скорее всего и не поймут (я пользуюсь борландовским из Delphi, раньше пользовался досовским, но какие-то у него малопонятные проблемы вылезли, даже не связанные с длинными именами, что-то он запускать отказывался как надо).

С уважением, Дима Орлов.

PS мы как-то с другом совместно проект на дельфи писали. Он интерфейс, который я вообще не знаю как пишется, а я некоторые функции, которые он как работают не знал. Причем я в Hетании (Израиль), а он в Харькове (Украина). Он мне присылал проект, я грузил его в дельфи, компилировал нажав там одну кнопку (глубже я эту систему не знаю), смотрел как работает, пару раз отладчик запускал с остановкой в моей функции. Кстати я не уверен, что мой друг знает язык make. Что такое make он конечно знает, но врядли когда-либо им пользовался.

Hi Yuriy, hope you are having a nice day!

03 Фев 05, Yuriy K wrote to Alexey V Bugrov:

AVB>> Уже на грани терпения, посему мейк рулит.

YK> Кстати, кто и в какой момент строит дерево зависимостей?

deps : $(sources) @echo # This is automaticaly generated dependency file > $@ @echo # Please do not change >> $@ $(gcc) -w -MM $(sources) >> $@

Т.е. зависимости генерятся при изменении любого из *.c проекта в самом начале. Этот файл автоматически включается в мейкфайл.

Зависимости пока строит gcc из комплекта cygwin, сейчас наверное вместо него буду использовать gcc30 от dsPIC, но это по сути одно и тоже.

WBR, AVB

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required