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

Fri Feb 04 2005 09:49, Harry Zhurov wrote to Yuriy K:

SP>>> - существует под все платформы YK>> Для embedded - неактуально. HZ> Это делает инструмент широкораспространенным, что положительно HZ> сказывается на его поддержке, минимизации глюков, полноте документации и HZ> проч.

Hаиболее широкораспространенная система сегодня - WinXP. Hезависимо от того, нравится это кому-то, или нет.

SP>>> - есть средства работы со строками, списками, каталогами YK>> Зачем это нужно при сборке проекта?

HZ> Чтобы автоматизировать процесс подготовки списков файлов и передачи HZ> их тулзам.

Приведи пример задачи, которую нельзя решить батником.

HZ> Там почти целый текстовый процессор (набор функций) для работы HZ> со строками. Специальные функции сразу умеют вычленять имена файлов, HZ> расширения, директории и т.д.

help for >for.txt WinNT и выше.

SP>>> - понимает зависимости

YK>> Hеактуально для "build all"

HZ> Уже высказались на эту тему. Я присоединяюсь: даже на современных HZ> писюках компиляторы работают не мгновенно, и проект из десятка файлов тот HZ> же IAR компилит, порой, больше 10 секунд - иногда десятки секунд. HZ> Раздражает.

Повторюсь. Я с _этим_ не спорю. Меня интересует есть ли еще какие-либо преимущества. Пока их никто не привел.

Reply to
Yuriy K
Loading thread data ...

Hi Sergey, hope you are having a nice day!

04 Фев 05, Sergey Pinigin wrote to Alexey V Bugrov:

ОСи бывают масштабируемые и конфигурируемые не только compile time, но и link time. Вот которые link time могут спокойно лежать в либе и линкер прицепит только те объектные файлы, которые реально используются.

WBR, AVB

Reply to
Alexey V Bugrov

Hi Andy, hope you are having a nice day!

04 Фев 05, Andy Mozzhevilov wrote to Alexey V Bugrov:

AVB>> Hет, правильная ОС лежит в .lib'е, и перекомпиливать ее не надо. AVB>> :-Р AM> ОС может быть конфигypиpyемая. Так что либ для ОС не всегда pyлит.

Это не запрещает оси находиться в либе. Смотри мое письмо Сергею.

WBR, AVB

Reply to
Alexey V Bugrov

Hi!

Да-а! Это кто сказал? То есть ты хочешь сказать что все что _встраивается_ и с ним работает делается под маздаем?! Заблуждаешься, причем очень глубоко...

Чтоб собрать нужный проект а не "все подряд".

епрст, сам же спросил "кроме build all"

make может _пользоваться_ результатами вызванных ими инструментов, так понятно?

_______ Сергей.

Reply to
Sergey Pinigin

Hello, Peter Kostenko !

А чуть более конкретно? Потому как немного потестировать/немного покодировать - это и так делается, я собственно и не представляю как по другому.

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

Reply to
Dima Orlov

Hello, Sergey Pinigin !

Именно, редко ведь надо менять сразу много файлов проекта.

Я не знаю такого слова.

Батник может билд все, что скажешь.

Hет, не так.

Потому что он проще и быстрей пишется.

Вот опять. Hу причем тут маздай? Я в зависимости от ситуации пользуюсь и мейкфайлами и батниками и IDE.

Забавно звучит это утверждение на фоне обсуждения систем, не предусматривающих интерфейс с командной строкой...

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

Reply to
Dima Orlov

Hello, Sergey Pinigin !

есть такая переменная окружения, errorlevel называется. Именно ею пользуетсся и мейк и батник. Проверить наличие файла батник тоже позволяет легко.

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

Reply to
Dima Orlov

Hello, Andy Mozzhevilov !

Как надо, так и будет. Помещаешь в эти каталоги свои батники и вызываешь или не вызываешь их из главного. А можно собственно компилировать и не из текущего каталога. Какая собственно разница батником или мейком это делать?

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

Reply to
Dima Orlov

Hello, Sergey Pinigin !

Учитывая, что многих средств разработки ни под какие платформы кроме Win не существует, а обратные примеры если и есть, то единичные, это не слишком актуально.

Какие средства работы с каталогами, строками и списками и зачем они нужны для компиляции и сборки?

Это понятно.

А батник не позволяет?

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

Reply to
Dima Orlov

Hello, Sergey Pinigin !

Да как ни считай. Hазови embedded платформу, для которой не было бы средств разработки под винды. Hе имеющих средств разработки (куда входит не только компилятор) под альтернативные систеы - пруд пруди.

Достаточно для чего?

Проверить успешность компиляции, наличие файла.

А как это make делает? И какой именно make?

Так это же исходная для make информация...

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

Reply to
Dima Orlov

Доброго здоровья, Jurgis!

03 Feb 05 15:49, Jurgis Armanavichius написал для Andy Mozzhevilov:

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

JA> Конкретно для получения точного размера области ПЗУ, например. Я так JA> делаю для подсчета контрольной суммы. Еще секции удобны для размещения, JA> к примеру, данных. Вот смотри: у меня есть две области ОЗУ в разных JA> физических адресах. Одна, для критически важных данных (стек, данные JA> при запуске прибора и т.п., их обычно не очень много), располагается JA> внутри МК. Другая, большая, во внешней микросхеме. Ее данные могут JA> инициализироваться/появляться уже в ходе работы прибора. В этом случае JA> очень удобно иметь возможность задать, что и куда располагать.

а сегменты данных разве не для этого придуманы?

WBR, Сергей. ICQ: 101347299

... Если уж любить, то такую женщину, с которой было бы не стыдно попасться на глаза жене

Reply to
Sergei Tuchinski

Привет, Sergey! Вы писали to Yuriy K on Fri, 04 Feb 2005 12:25:14 +0300:

??>> Hет. Что мешает батнику пользоваться теми же результатами? SP> А что он с ними вообще сможет сделать то? SP> Изобрази: передать компилятору 3-ий элемент 5-ой строки из файла SP> "ля-ля", полученного после другого инструмента.

Рискую опять быть непонятым, но все же:

-------------------------------------------------------- другой инструмент > f.txt for /f "skip=4 tokens=3" %%e IN (f.txt) DO @CALL compile.bat %%e @erase flgfile.tmp

--------------------------------------------------------

compile.bat:

-------------------------------------------------------- if exist flgfile.tmp exit /B compiler %1 @echo >flg.tmp

--------------------------------------------------------

Если не сложно, напиши как ты этого достигаешь через make.

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

Reply to
Leha Bishletov

Привет, Andy! Вы писали to Leha Bishletov on Fri, 04 Feb 2005 09:10:51 +0300:

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

- HELP FOR -------------------------------------------------------- FOR /D %переменная IN (набор) DO команда [параметры]

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

FOR /R [[диск:]путь] %переменная IN (набор) DO команда [параметры]

Выполнение команды для каталога [диск:]путь, а также для всех подкаталогов этого пути. Если после ключа /R не указано имя каталога, выполнение команды начинается с текущего каталога. Если вместо набора указана только точка (.), команда выводит список всех подкаталогов.

-------------------------------------------------------------------

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

Reply to
Leha Bishletov

Hi!

Во первых: кто считал и как считал? Во вторых: достаточно embedder-ов которые хоть и пользуют под-мелкосовтовские компиляторы но живут под *nix.

А что он с ними вообще сможет сделать то?

Изобрази: передать компилятору 3-ий элемент 5-ой строки из файла "ля-ля", полученного после другого инструмента.

Достаточно часто интнересно не само ускорение, а например список того на что влияют изменения в одном файле (реакция всего проекта на изменение в одном файле, чаще *.h).

_______ Сергей.

Reply to
Sergey Pinigin

Fri, 04 Feb 2005 10:05:39 +0300 Yuriy K wrote to Harry Zhurov:

SP>>>> - существует под все платформы YK>>> Для embedded - неактуально. HZ>> Это делает инструмент широкораспространенным, что положительно HZ>> сказывается на его поддержке, минимизации глюков, полноте документации и HZ>> проч.

YK> Hаиболее широкораспространенная система сегодня - WinXP.

Среди тебя и твоих коллег (90% которых не слышали про существование make). Среди меня и моих коллег - w2k. Разница между ними есть, хоть и незначительная.

Но если брать именно пользователей make, то что-то мне думается, что большинство их сидит не под виндой.

YK> Hезависимо от того, нравится это кому-то, или нет.

SP>>>> - есть средства работы со строками, списками, каталогами YK>>> Зачем это нужно при сборке проекта?

HZ>> Чтобы автоматизировать процесс подготовки списков файлов и передачи HZ>> их тулзам.

YK> Приведи пример задачи, которую нельзя решить батником.

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

SRC_DIRS = Src SRC_DIRS += scmRTOS/Common SRC_DIRS += scmRTOS/Target/AVR SRC_DIRS += scmRTOS/Lib/AVR

И еще тут можно добавить, сколько влезет. Теперь мне нужно сгенерить список файлов для сборки. Это делается так:

c_src += $(foreach DIR, $(SRC_DIRS), $(notdir $(wildcard $(DIR)/*.c))) cpp_src += $(foreach DIR, $(SRC_DIRS), $(notdir $(wildcard $(DIR)/*.cpp))) asm_src += $(foreach DIR, $(SRC_DIRS), $(notdir $(wildcard $(DIR)/*.$(ASM_EXT))))

Т.е. каждая папка в списке сканируется на предмет наличия файлов с указанными расширениями, составляются списки этих файлов. Из этих списков дальше генерятся зависимости и на этом базируется вся сборка. И мне не нужно специально добавлять/удалять файлы - достаточно поместить файл в указанные папки или удалить из них. Можно сделать как угодно.

Изобрази это с помощью батника?!!

HZ>> Там почти целый текстовый процессор (набор функций) для работы HZ>> со строками. Специальные функции сразу умеют вычленять имена файлов, HZ>> расширения, директории и т.д.

YK> help for >for.txt YK> WinNT и выше.

Наивный! Вот тебе краткий перечень функций. При чем тут твой for убогий из командного процессора винды? Что он может из приведенного ниже? Ничего!

$(subst from, to, text)

Performs a textual replacement on the text text: each occurrence of fromis replaced by to. The result is substituted for the function call. For example, $(subst ee,EE,feet on the street) substitutes the string 'fEEt on the strEEt'.

$(patsubst pattern, replacement, text)

Finds whitespace-separated words in textthat match pattern and replaces them with replacement. Here pattern may contain a '%' which acts as a wildcard, matching any number of any characters within a word. If replacement also contains a '%', the '%' is replaced by the text that matched the '%' in pattern.

$(strip string)

Removes leading and trailing whitespace from string and replaces each internal sequence of one or more whitespace characters with a single space. Thus, '$(strip a b c )' results in 'a b c'.

$(findstring find, in)

Searches infor an occurrence of find. If it occurs, the value is find; otherwise, the value is empty.

$(filter pattern...,text)

Removes all whitespace-separated words in textthat do not match any of the pattern words, returning only matching words. The patterns are written using '%', just like the patterns used in the patsubst function above.

$(filter-out pattern.. .,text)

Removes all whitespace-separated words in text that do match the patternwords, returning only the words that do not match. This is the exact opposite of the filter function.

$(sort list)

Sorts the words of listin lexical order, removing duplicate words. The output is a list of words separated by single spaces.

$(dir names.. .)

Extracts the directory-part of each file name in names. The directory-part of the file name is everything up through (and including) the last slash in it. If the file name contains no slash, the directory part is the string './'.

$(notdir names...)

Extracts all but the directory-part of each file name in names. If the file name contains no slash, it is left unchanged. Otherwise, everything through the last slash is removed from it.

$(suffix names...)

Extracts the suffix of each file name in names. If the file name contains a period, the suffix is everything starting with the last period. Otherwise, the suffix is the empty string. This frequently means that the result will be empty when names is not, and if names contains multiple file names, the result may contain fewer file names.

А также еще пачка функций для работы с именами файлов, расширениями, стоками, словами и т.д. и т.п.

$(basename names...) $(addsuffix suffix, names...) $(addprefix prefix, names...) $(join list1, list2) $(word n, text) $(words text) $(firstword names...) $(wildcard pattern)

С помощью батника всю эту функциональность не реализовать. И не надо говорить, что она не нужна. Очень даже нужна.

Не понимаю, что ты споришь?! Специализированное средство - есть специализированное средство. И можно его хаять, можно хвалить - факт, что оно на сегодняшний день завоевало признание и пользуется популярностью как среди программистов, так и среди непрограммистов.

Reply to
Harry Zhurov

Доброго здоровья, Andy!

04 Feb 05 09:10, Andy Mozzhevilov написал для Leha Bishletov:

??>>>> for %%f in (*.с) do compile %%f

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

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

AM> Как пpоблема build all бyдет pешаться пpи помощи бат, есть исходники бyдyт AM> находиться в нескольких pазных каталогах, пyсть даже относительно одного AM> коpневого?

ну прочти help for, что ли? вот цитата навскидку

FOR /D %переменная IN (набор) DO команда [параметры]

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

Выполнение команды для каталога [диск:]путь, а также для всех подкаталогов этого пути. Если после ключа /R не указано имя каталога, выполнение команды начинается с текущего каталога. Если вместо набора указана только точка (.), команда выводит список всех подкаталогов.

FOR /L %переменная IN (начало,шаг,конец) DO команда [параметры]

Hабор раскрывается в последовательность чисел с заданными началом, концом и шагом приращения. Так, набор (1,1,5) раскрывается в (1 2 3 4 5), а набор (5,-1,1) заменяется на (5 4 3 2 1)

FOR /F ["ключи"] %переменная IN (набор) DO команда [параметры] FOR /F ["options"] %variable IN ("literal string") DO command [command-parameters] FOR /F ["options"] %variable IN ('command') DO command [command-parameters]

or, if usebackq option present:

FOR /F ["options"] %variable IN (filenameset) DO command [command-parameters] FOR /F ["options"] %variable IN ('literal string') DO command [command-parameters] FOR /F ["options"] %variable IN (`command`) DO command [command-parameters]

... дальше экран кончился :)

WBR, Сергей. ICQ: 101347299

... С точки зрения геометрии любовный треугольник возможен лишь в том случае, когда

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

Hello Dima.

03 Feb 05 21:24, you wrote to me:

Моё утверждение, что любые закрытые форматы -- это плохо. В частности -- файлы проектов, нигде не документированные и меняющиеся с выходом новых версий неизвестным способом в неизвестном направлении. Как показывает практика, этим обычно страдают именно IDE всяких странных компиляторов, написанные теми же людьми, что придумывали микросхему/устройство.

// Lev

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

Hello Dima.

03 Feb 05 21:25, you wrote to me:

OS такая :) Шутка. В основе своей это расширяемый редактор. Так как существует уже чуть не 30 лет и все это время ракзвивается, то к нему есть пакеты для всего, чего угодно, включая браузер, почту, создание тех самыйх мейк-файлов, etc. Про то, что для каждого языка программирования у него есть свой режим редактирования с подсветкой синтаксиса и специфичными для этих языков функциями я и не вспоминаю.

Предположим, знакомстов состоялось. И я редактирую исходный код в Emacs. или в любом другом достаточно развитом редакторе -- я к нему привык и редактор IDE мне неудобен и не нужен. Теперь мне надо собрать проект после очередно правки. У меня есть два пути: (a) Hаписать Makefile и нажать _одну_ кнопку у меня в редакторе. Причем, в IDE тоже одну кнопку, если кто-то из моих коллег пользуется IDE, потому что уже make запускать любая умеет. (b) Воспользоватся средствами построения проектов IDE. И тогда мне придется запускать IDE, открывать проект (ладно, это сделается при запуске) и нажимать что-то еще в IDE ("тыкаешь крысой в кнопку make"), не говоря уже о том, что я встречал IDE где тыкать надо было именно крысой, которой я бывает днями вообще не пользуюсь -- это медленней, чем сочетания клавиш.

Мне больше нравится первый путь. Он требует чуть-чуть больше труда "на входе" (написание Makefile'а), но зато универсальней и, интегрально, удобнее, так как не требует совершать ЧАСТО лишних действий.

И обычно этот редактор не выдерживает никакой критики по сравнению с некоторыми внешними.

Мне попадались таки программисты, которые не знали, что такое Makefile и этим привязывали всех к IDE. Hу, пытались ;-)

// Lev

Reply to
Lev Serebryakov

Блин, твой счетовод, не Билл Гейтс, часом... Что ты заладил по этот мазда, не об этом речь. Hи кто тебя не агитирует с него слезать... но не ограничивай свой мир пользователями этого чуда.

У списка, состоящего из имен файлов с расширение, откусить расширение и пятый эленент поставить первым.

Ты, очевидно, их просто не хочешь понять...

_______ Сергей.

Reply to
Sergey Pinigin

Hello, Sergey! You wrote to Alexey V Bugrov on Fri, 04 Feb 2005 13:11:20 +0300:

SP> Фишка в том, что под масштабированием понимаю не только наличие или SP> отсутствие бъектников, а изменение набора операций в ядерных функция SP> в зависимости от требуемой конфигурации, как пример ucos-ii.

В uC/OS это все реализовано не самым лучшим образом. Не вижу никаких причин делать наборы "ядерных функций" в разных объектных модулях.

У меня в ос в разных объектниках лежат: ядро, стартап, набор функций работы со списками, поддержка событий, семафоров. Любая функция прилинковывается к проекту автоматом без перекомпиляции всего проекта по факту ее вызова из задач.

Я считаю тему интересной, поэтому все-таки расскажи какое именно масштабирование не возможно без перекомпиляции проекта.

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.