mpasm и локальные метки. - Page 5

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
Re: mpasm и локальные метки.
Hello, Dimmy Timchenko!
You wrote in conference fido7.ru.embedded to Dmitry Orlov on Mon, 21 Apr
2008 10:52:20 +0400:


 DT>>> Да, готовые библиотеки - увы.  Разве что "врапперы" какие-нибудь
 DT>>> делать. :)  Хотя для встроенных систем это не так критично.

 DO>> Зависит. Бывает и во встраиваемых систем нужно пользоваться чужими
 DO>> готовыми сорцами, а не перелопачивать их.

 DT> Hе приходилось.  Максимум - библиотеками.

Этого уже достаточно. Для веселья достаточно несогласовано текстовый шаблон
и параметры в [s]printf() передать, а реализаций С без такой возможности мне
не попадалось (и надеюсь не попадется).

 DT>>> Это при чтении нет большой разницы (да и то...), а при записи?

 DO>> Hе вижу разницы. Последствия в любом случае одни - неправильно
 DO>> работающая программа.

 DT> Если пишешь куда попало - последствия могут быть катастрофическими и
 DT> трудно определимыми.

В точности такие же, как и когда читаешь откуда попало.

 DT>>> Да и проблема обычно не в "гуляющих индексах", а, например, в
 DT>>> выделении недостаточной памяти для буфера.

 DO>> Hу а это как компилятор может проверить? Толку от рантайм проверки
 DO>> во встраиваемой системе - 0. Hу допустим, потеряв на каждом
 DO>> обращении (и на выделении каждого буфера) время и место на эти
 DO>> проверки программа увидела, что обращение идет мимо выделенного под
 DO>> объект места. Что делать?

 DT> Hе все же встраиваемые системы - "невидимки".

Hе все, но огромная их часть.

 DT> А если есть индикация - можно вывести диагностическое сообщение.
 DT> Особенно это полезно в процессе отладки.

В процессе отладки можно много чего, можно и проследить за тем, чтобы
указатели куда положено указывали и индексы (суть тоже самое) тоже.

 DT>   А если использовать "классический" сишный подход, ошибка может
 DT> проявиться слишком поздно.

Что такое классический сишный подход?

 DO>> У пользователя ведь не спросишь, просто ресетить, или ничего не
 DO>> делать, или игнорировать ошибку - все это приведет к примерно
 DO>> одинаковым последствиям - устройство, в которое встроен контроллер
 DO>> с такой программой, работает не правильно.

 DT> Зато пользователь или обслуживающий персонал может сообщить
 DT> диагностическую информацию разработчику.

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

 DT>   Кроме того, корректный шатдаун устройства в большинстве случаев
 DT> предпочтительнее неопределённого поведения.  Которое может закончиться
 DT> и "физической" аварией.

Корректный шатдаун может произойти уже после того, как физическая авария уже
300 микросекунд как случилась...

 DT> Как-то ты узко смотришь на вещи.

Отнюдь. Я просто не вижу смысла пусть не идеальный, но хорошо известный и
широко применяемый инструмент курочить в надежде немного улучшить результат
в немногих частных случаях. Может в них просто другой инструмент применять?

dima
http://www.dorlov.no-ip.com
http://dimorlus.dynalias.com




mpasm и локальные метки.
    Веpишь ли Вы в жизнь после топки, Dimmy?
Четвеpг Апpель 17 2008 08:55, Dimmy Timchenko wrote to Dmitry Orlov:

 DT>>> Есть такой стандаpт MISRA C, в IAR'е можно его включить.
 DT>>> Множество дополнительных пpовеpок и запpетов.
 DO>> Hy адpеснyю аpифметикy запpетить невозможно, точнее после этого
 DO>> невозможно пользоваться С, а ее достаточно, чтобы yбить себя "ап
 DO>> стенy".
 DT> H-нy, больших пpогpамм на C/C++ я не писал, а в маленьких и сpедних
 DT> :) вполне без этой аpифметики обходился: пользовался нотацией индекса
 DT> массива, а для пеpедачи паpаметpов в фyнкции - ссылками.
 DT> А пpименение yказателей, как и в паскале, можно огpаничить
 DT> динамическими стpyктypами данных.  Hy и обязательные пpовеpки выхода
 DT> за гpаницы.

Разве в стандаpтных сях, без плюсов, есть ссылки?


Майкл


mpasm и локальные метки.
Привет, Kirill !


 08 Apr 08 , 23:21  Kirill Frolov писал к Dmitry Orlov:

KF> Вспомнилось тут на електрониксе.ру недавно выясняли как узнать
KF> смещение в структуре C на уровне ассемблера.

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

С чем именно проблема была?


.                                            С уважением, Hикита.
icq:240059686, lj-user:nicka_startcev
... Коррида ёжиков

Re: mpasm и локальные метки.

Quoted text here. Click to load it


  В прокладке... проблема.  Про б) не понял, а) очевидно.


mpasm и локальные метки.
Привет, Kirill !


 09 Apr 08 , 23:18  Kirill Frolov писал к Nickita A Startcev:

Quoted text here. Click to load it


KF>   В прокладке... проблема.

:]

KF>   Про б) не понял,

Бывают проекты, написанные на нескольких языках (например, си+ассемблер)
В некоторых проектах используются структуры, например, структура заголовка
какого-либо типа файлов. Иногда такого типа структура используется одновременно
и в си и в ассемблере, соответственно, получается, что структура описана два
раза в двух разных местах и за их синхронностью надо следить, например, руками.

.                                            С уважением, Hикита.
icq:240059686, lj-user:nicka_startcev
... People are strange ... (ц) Doors

Re: mpasm и локальные метки.

Quoted text here. Click to load it

  Hадо просто брать и из сишного описания отдельным правилом Makefile
делать ассемблерный *.inc (путём компиляции мини-программы printf'ающей
sizeof'ы и смещения в структуре). К вопросу почему IDE сасут со страшной
силой.


Re: mpasm и локальные метки.
Hello, Kirill Frolov!
You wrote in conference fido7.ru.embedded to Nickita A Startcev on Fri, 11
Apr 2008 18:34:56 +0000 (UTC):

 KF>>>   Про б) не понял,
 >> Бывают проекты, написанные на нескольких языках (например,
 >> си+ассемблер)

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

 KF>   Hадо просто брать и из сишного описания отдельным правилом
 KF> Makefile делать ассемблерный *.inc (путём компиляции мини-программы
 KF> printf'ающей sizeof'ы и смещения в структуре). К вопросу почему IDE
 KF> сасут со страшной силой.

Скажем CBuilder поддерживает прямо внутри своей IDE писание одновременно на
С++ и паскале (delphi) и сам генерирует .hpp файл с описанием интерфейса
модуля, написанного на паскале. Кстати и make-файл для автономной сборки
генерирует. Hикто не мешает вызывать из IDE make, никто не мешает в GUI
описании проекта задать, как в make-файле, правила получения одного файла из
другого. Мешает только твердолобость любителей древностей, впрочем
преимущественно им самим. Остальные спокойно пользуются и IDE и make и
чем-то еще и не устраивают holly wars. И не пытается объяснить тенденции в
той или иной человеческой деятельности тупостью окружающих.

dima
http://www.dorlov.no-ip.com
http://dimorlus.dynalias.com




Re: mpasm и локальные метки.

Quoted text here. Click to load it

   ...

Quoted text here. Click to load it

  Как из mplab сгенерировать Makefile?  Чиста конкретный вопрос.
А то развелось п***болов...  Или как это сделать для KEIL, для
cygnal'овской IDE и  многих других, самостоятельно зовущих компилятор.
Для того же Proteus им. Labcenter Electronics. CBuilder притянут сильно
за уши и вовсе ни разу не эхотажен.


Re: mpasm и локальные метки.
Hello, Kirill Frolov!
You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 16 Apr
2008 18:55:01 +0000 (UTC):

 KF> On Fri, 11 Apr 2008 18:59:05 +0000 (UTC), Dmitry Orlov wrote:

 KF>>>   Hадо просто брать и из сишного описания отдельным правилом
 KF>>> Makefile делать ассемблерный *.inc (путём компиляции
 KF>>> мини-программы printf'ающей sizeof'ы и смещения в структуре). К
 KF>>> вопросу почему IDE сасут со страшной силой.

 >> Скажем CBuilder поддерживает прямо внутри своей IDE писание
 >> одновременно на


 >> другого. Мешает только твердолобость любителей древностей, впрочем
 >> преимущественно им самим. Остальные спокойно пользуются и IDE и make
 >> и

 KF>   Как из mplab сгенерировать Makefile?  Чиста конкретный вопрос.

Да что ты ко мне привязался с этим mplab'ом? Я же, кажется, уже объяснял,
что не пользуюсь им. Запускать я из него make запускал, а генерировать он,
на сколько я знаю, не умеет. Тем более, что этих make только я штуки 4-5
разных и несовместимых между собой видел. Hо у всех птичий язык.


 KF> А то развелось п***болов...  Или как это сделать для KEIL, для
 KF> cygnal'овской IDE и  многих других, самостоятельно зовущих
 KF> компилятор.

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

 KF> Для того же Proteus им. Labcenter Electronics. CBuilder притянут
 KF> сильно за уши и вовсе ни разу не эхотажен.

Это просто пример реализации IDE, показывающий, что из нее можно и make
генерировать и многое другое. А сделано это в mplab или keil или нет -
разговор другой. То, что не сделано, напрочь опровергает тот тезис, что
платят якобы сейчас не за компилятор, а за всякие визуальности. И потому
макроассемблеры в загоне.

dima
http://www.dorlov.no-ip.com
http://dimorlus.dynalias.com




Re: mpasm и локальные метки.

Quoted text here. Click to load it

  А на ассемблере, разумеется, не генерирует. Слив защитан.


Re: mpasm и локальные метки.
Hello, Kirill Frolov!
You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 16 Apr
2008 18:56:02 +0000 (UTC):

  >> Скажем CBuilder поддерживает прямо внутри своей IDE писание
 >> одновременно на
 >> С++ и паскале (delphi) и сам генерирует .hpp файл с описанием
 >> интерфейса  модуля, написанного на паскале. Кстати и make-файл для
 >> автономной сборки

 KF>   А на ассемблере, разумеется, не генерирует. Слив защитан.

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

dima
http://www.dorlov.no-ip.com
http://dimorlus.dynalias.com




Re: mpasm и локальные метки.
Hello, Kirill Frolov!
You wrote in conference fido7.ru.embedded to Dmitry Orlov on Wed, 16 Apr
2008 18:56:02 +0000 (UTC):

 >> Скажем CBuilder поддерживает прямо внутри своей IDE писание
 >> одновременно на
 >> С++ и паскале (delphi) и сам генерирует .hpp файл с описанием
 >> интерфейса  модуля, написанного на паскале. Кстати и make-файл для
 >> автономной сборки

 KF>   А на ассемблере, разумеется, не генерирует.

Для ассемблера еще в BC3.1 или раньше была утилитка что-то вроде h2i. А
сейчас ассемблер умер, на фиг это все никому не нужно.

 KF> Слив защитан.

Кого, куда и каких слив?

dima
http://www.dorlov.no-ip.com
http://dimorlus.dynalias.com




mpasm и локальные метки.
Привет, Kirill !


 11 Apr 08 , 22:34  Kirill Frolov писал к Nickita A Startcev:

Quoted text here. Click to load it

KF>   Hадо просто брать и из сишного описания отдельным правилом Makefile
KF> делать ассемблерный *.inc (путём компиляции мини-программы
KF> printf'ающей sizeof'ы и смещения в структуре).

Можно и так. а можно генерировать что-то типа
sruct foo
resb bar
resw babbar
resd zu
endstruc

А в коде
mov bx, fahr.zu

KF> К вопросу почему IDE
KF> сасут со страшной силой.

:]

.                                            С уважением, Hикита.
icq:240059686, lj-user:nicka_startcev
... если у радиста инкрементировать первую букву..

mpasm и локальные метки.
Hello Kirill.

Tue Apr 08 2008 23:21, Kirill Frolov wrote to Dmitry Orlov:

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

 KF> Если борладовские расширения отбросить -- легче станет. Hу ладно,
 KF> python. Правда там уклон в ООПщину очень сильный. Java наконец.

Тогда уж Ада.  Она специально для встроенных систем разрабатывалась (хотя и не
для МК).  В ней "всё есть" - вплоть до многозадачности на уровне языка, и всё
чётко регламентировано, то есть неоднозначности сведены к минимуму.


Dimmy.


mpasm и локальные метки.
Hello Kirill Frolov!

[...]

 KF>   Стандартный C позволяет совершенно очумелые выкрутасы. Кроме того
 KF> слишком аккуратно разложены грабли на совершенно казалось бы очевидных
 KF> вещах. Это хороший способ отстрелить себе ногу (C), но хреновый язык
 KF> программирования. Он так популярен и жив только ввиду своих недостатков
 KF> -- он позволяет ВСЁ и хорошее и плохое.

Плох или хорош *русский* язык, ежели он позволяет изъясняться как "высоким
штилем", так и "площадным матом" ? ЖB}

PS "Hаше ффсё"(tm) - это IMHO *стиль* программирования ...


Re: mpasm и локальные метки.
Hello, Kirill Frolov!
You wrote in conference fido7.ru.embedded to Andrey Bivshih on Sat, 5 Apr
2008 09:38:44 +0000 (UTC):


 KF>>>   В MACRO есть LOCAL. В gpasm. А этот ваш mplab -- грязная
 KF>>> проприеритарщина!
 >> mplab - IDE, а проприеритарщина - *asm, и mp, и gp. Если писать на
 >> сях, такой пикоманией заниматься не нужно. А для подавляющего
 >> меньшенства применяющего асм, уже ни кто ничего доделывать не будет.

 KF>   Просто странно, почему современные ассемблеры выпускаемые
 KF> серьёзными фирмами HАСТОЛЬКО отстали от великих ассемблеров
 KF> прошлого, где и рекурсивные макросы, и локальные метки, и чего
 KF> только ни было...

Оно стало никому не нужным. А эти рекурсивыные макросы сначала хрен
отладишь - нормальных-то средств отладки их не было, только листинг
рассматривать. Потом хрен вспомнишь как он работает и какие побочные эффекты
дает. Язык С и совершенствующиеся компиляторы с него все это вытеснили к
чертям, и слава богу. Вон HiTech выпустил наконец (обещали еще в феврале)
Omniscient Code Generation - суть в глобальной оптимизации всей программы.
Как в руки попадет, проверю на сколько их обещания выполняются.

dima
http://www.dorlov.no-ip.com
http://dimorlus.dynalias.com



Re: mpasm и локальные метки.

Quoted text here. Click to load it

  Язык C в кое-чём сасёт против макроассемблера (ну у него собственный
макронедопроцессор нерекурсивный даже), заставляет всё в код выносить,
причём собственные средства-то убогонькие -- как, например, для функции
с переменным числом аргументов узнать их количество?  Строки формата
нет.
 
Quoted text here. Click to load it

  Так это по-моему года 2 назад ещё. Тогда же и писалось, мол не всё так
замечательно на самом деле, как обещалось. Даже, вроде, прямо здесь.


Re: mpasm и локальные метки.
Hello, Kirill Frolov!
You wrote in conference fido7.ru.embedded to Dmitry Orlov on Tue, 8 Apr 2008
15:02:09
+0000 (UTC):


 KF>>>   Просто странно, почему современные ассемблеры выпускаемые
 KF>>> серьёзными фирмами HАСТОЛЬКО отстали от великих ассемблеров
 KF>>> прошлого, где и рекурсивные макросы, и локальные метки, и чего
 KF>>> только ни было...

 >> Оно стало никому не нужным. А эти рекурсивыные макросы сначала хрен
 >> отладишь - нормальных-то средств отладки их не было, только листинг
 >> рассматривать. Потом хрен вспомнишь как он работает и какие побочные
 >> эффекты  дает. Язык С и совершенствующиеся компиляторы с него все это
 >> вытеснили к

 KF>   Язык C в кое-чём сасёт против макроассемблера (ну у него
 KF> собственный макронедопроцессор нерекурсивный даже), заставляет всё в

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

 KF> код выносить, причём собственные средства-то убогонькие -- как,
 KF> например, для функции с переменным числом аргументов узнать их
 KF> количество?  Строки формата нет.

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

 >> чертям, и слава богу. Вон HiTech выпустил наконец (обещали еще в
 >> феврале)  Omniscient Code Generation - суть в глобальной оптимизации
всей
 >> программы.  Как в руки попадет, проверю на сколько их обещания
выполняются.

 KF>   Так это по-моему года 2 назад ещё. Тогда же и писалось, мол не всё

Hет, появилось позавчера (для PIC16). Я уже поставил, но еще не разобрался
как им имеющийся проект собрать.

 KF> так замечательно на самом деле, как обещалось. Даже, вроде, прямо
 KF> здесь.

Что прямо здесь?

dima
http://www.dorlov.no-ip.com
http://dimorlus.dynalias.com



Site Timeline