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

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.

Reply to
Yuriy K
Loading thread data ...

Hello Dmitry.

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

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

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

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

Alexey

Reply to
Alexey Boyko

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

Reply to
Alexey Boyko

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

Reply to
Alexey Boyko

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

Reply to
Alexey Boyko

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

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

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

WBR, AVB

Reply to
Alexey V Bugrov

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

Reply to
Andy Mozzhevilov

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

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

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

CVS пользуешь?

_______ Сергей.

Reply to
Sergey Pinigin

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

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

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

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

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

_______ Сергей!

Reply to
Sergey Pinigin

Привет, 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

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

Hello Dima.

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

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

// Lev

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

Hello Dima.

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

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

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

// Lev

Reply to
Lev Serebryakov

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

Reply to
Lev Serebryakov

Hello, Sergey Pinigin !

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

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

Зачем???

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

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

Reply to
Dima Orlov

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

Reply to
Alexey V Bugrov

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.

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

Reply to
Yuriy K

Hello, Lev Serebryakov !

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

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

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

Reply to
Dima Orlov

Hello, Lev Serebryakov !

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

Или так.

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

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

Reply to
Dima Orlov

|Hello, Lev Serebryakov !

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

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

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

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

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

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

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

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

Reply to
Dima Orlov

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

Reply to
Alexey V Bugrov

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.