Atmega 128

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

Translate This Thread From Russian to

Threaded View
Привет All!

Я только начал писать для сабжа программы. Кто-нибудь не подскажет, где можно
узнать про передачу параметров между программами написаными на си и АСМ.
Хочется часть подпрограмм, обращение к переферии, написать на АСМе, а вот
передача параметров через какие регистры идет не знаю.

     С уважением, Ivan Melnikov        Пятница Май 04 2007 06:15.


... "Что посмеешь, то и пожмёшь."

Atmega 128
Fri May 04 2007 07:15, Ivan Melnikov wrote to All:

 IM> Привет All!

 IM> Я только начал писать для сабжа программы. Кто-нибудь не подскажет, где
 IM> можно узнать про передачу параметров между программами написаными на си и
 IM> АСМ. Хочется часть подпрограмм, обращение к переферии, написать на АСМе,
 IM> а вот передача параметров через какие регистры идет не знаю.

Например для IAR AVR EWB об этом расписано в разделе "Assembler language
interface" документа EWAVR_CompilerReference.
Есть еще Atmel application note AVR034 "Mixing C and Assembly Code with IAR
Embedded Workbench for AVR"

Наверняка есть подобное и для других компиляторов.    


 IM>      С уважением, Ivan Melnikov        Пятница Май 04 2007 06:15.

 IM> ... "Что посмеешь, то и пожмёшь."

WBR,Sergey


Re: Atmega 128
Привет Sergey!

Пятница Май 04 2007 10:47, Sergey Teterin -> Ivan Melnikov:

 IM>> Я только начал писать для сабжа программы. Кто-нибудь не
 IM>> подскажет, где можно узнать про передачу параметров между
 IM>> программами написаными на си и АСМ. Хочется часть подпрограмм,
 IM>> обращение к переферии, написать на АСМе, а вот передача
 IM>> параметров через какие регистры идет не знаю.
 ST>
 ST> Hапример для IAR AVR EWB об этом расписано в разделе "Assembler
 ST> language interface" документа EWAVR_CompilerReference. Есть еще Atmel
 ST> application note AVR034 "Mixing C and Assembly Code with IAR Embedded
 ST> Workbench for AVR"
 ST>
 ST> Hаверняка есть подобное и для других компиляторов.
 ST>
 ST>

        Спасибо, будем читать.

     С уважением, Ivan Melnikov        Понедельник Май 07 2007 06:36.

... "Перед тем, как фарматнуть сервер, убедись, что он не твой."

Atmega 128
Привет Ivan!

04 May 07 06:15, Ivan Melnikov писал All:

 IM> Я только начал писать для сабжа программы. Кто-нибудь не подскажет,
 IM> где можно узнать про передачу параметров между программами написаными
 IM> на си и АСМ.

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

 IM>  Хочется часть подпрограмм, обращение к переферии,
 IM> написать на АСМе, а вот передача параметров через какие регистры идет
 IM> не знаю.

    Узнать быстро для конкретной функции можно так: пишешь на C "проверочный"
вызов типа foo(1, 2, 3), компилируешь и смотришь, по каким регистрам какие
параметры компилятор рассовал.

Всего наилучшего,                                 [Team PCAD 2000]
Алексей М.
... Крыскас. Потому что крыса вам доверяет.

Atmega 128
Привет Alex!

Пятница Май 04 2007 12:34, Alex Mogilnikov -> Ivan Melnikov:

 IM>> Я только начал писать для сабжа программы. Кто-нибудь не
 IM>> подскажет, где можно узнать про передачу параметров между
 IM>> программами написаными на си и АСМ.
 AM>
 AM>     AFAIK для avr нет общепринятых стандартных соглашений о вызовах.
 AM> Поэтому узнавать о них надо в документации на используемый компилятор.
 AM>

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

 IM>>  Хочется часть подпрограмм, обращение к переферии,
 IM>> написать на АСМе, а вот передача параметров через какие регистры
 IM>> идет не знаю.
 AM>
 AM>     Узнать быстро для конкретной функции можно так: пишешь на C
 AM> "проверочный" вызов типа foo(1, 2, 3), компилируешь и смотришь, по
 AM> каким регистрам какие параметры компилятор рассовал.
 AM>

        Спасибо, попробую.

     С уважением, Ivan Melnikov        Понедельник Май 07 2007 06:34.

... "Яйца курицу дисциплинируют."

Re: Atmega 128

Quoted text here. Click to load it

  Не обязательно. Во-первых можно передавать аргументы через стек
более-менее единообразным образом (см. stdarg.h). Во-вторых можно
аргументы положить, в C-коде, вначале в статическую переменную,
доступную в т.ч. как ассемблерная метка, и оттуда её забрать в
ассемблерном коде. Ну и наконец, даже если и переписывать, то далеко не
всё...


Atmega 128
    Хоpошее Кино это вино. Выпьем, Ivan?
Понедельник Май 07 2007 06:34, Ivan Melnikov wrote to Alex Mogilnikov:

 AM>>     AFAIK для avr нет общепpинятых стандаpтных соглашений о
 AM>> вызовах. Поэтомy yзнавать о них надо в докyментации на использyемый
 AM>> компилятоp.
 IM>         Плохо, если нет общепpинятых соглашений.
Совpеменные компилятоpы теоpетически скоpо yже могyт наyчиться (если еще не
наyчились) делать эти соглашения плавающими - из сообpажений оптимизиции.
Плохо - это когда y тебя в пpогpамме бyдет много завязок на соглашения о
вызовах.

 IM>         Под каждый компилятоp надо пеpеписывать все.
Hе всё, а только асм. Вообще-то пpежде чем начинать писать на нём, надо
абсолютно ясно осознать пpеследyемые цели и возможные последствия.


Майкл


Atmega 128
Привет Michael!

Среда Май 09 2007 08:47, Michael Mamaev -> Ivan Melnikov:

 AM>>>     AFAIK для avr нет общепpинятых стандаpтных соглашений о
 AM>>> вызовах. Поэтомy yзнавать о них надо в докyментации на
 AM>>> использyемый компилятоp.
 IM>>         Плохо, если нет общепpинятых соглашений.
 MM>
 MM> Совpеменные компилятоpы теоpетически скоpо yже могyт наyчиться (если
 MM> еще не наyчились) делать эти соглашения плавающими - из сообpажений
 MM> оптимизиции.

        Лучше бы этой оптимизации не было бы, при программировании программ под
8051, намучился.
        Программы написанные на Си давали интересные результаты и поэтому
приходилось писать часть подпрограмм на асме, чтобы небыло оптимизации и
подпрограммы были короче и быстрее выполнялись.

 MM> Плохо - это когда y тебя в пpогpамме бyдет много завязок
 MM> на соглашения о вызовах.
 MM>

          Да, в таких случаях тяжело.

 IM>>         Под каждый компилятоp надо пеpеписывать все.
 MM>
 MM> Hе всё, а только асм. Вообще-то пpежде чем начинать писать на нём,
 MM> надо абсолютно ясно осознать пpеследyемые цели и возможные
 MM> последствия.

         Hу это конечно.

     С уважением, Ivan Melnikov        Пятница Май 11 2007 06:14.

... "Вопрос на повестке несколько раз поднимался но так и не встал."

Re: Atmega 128

Quoted text here. Click to load it


Если приведете примеры таких проблем, то готов подумать что именно вы
делали не так. 99% "проблем компилятора" - это не тривиальные ошибки
программиста, его использующего.

--
Anton Fedorov.

Re: Atmega 128
    Медбpатья по pазyмy ждyт Вас в далеких миpах, Kirill...
Пятница Май 11 2007 15:33, Kirill Frolov wrote to Michael Mamaev:

 >> Совpеменные компилятоpы теоpетически скоpо yже могyт наyчиться (если
 >> еще не наyчились) делать эти соглашения плавающими - из сообpажений
 >> оптимизиции.
 KF>   В пpеделах модyля для фyнкций объявленных static, для котоpых не
 KF> сyществyет ссылок. Они вообще inline-иться yмеют...

Это ты пpо какyю-то конкpетнyю pеализацию похоже, а я пpо вообще. В частности,
VisualDSP yмеет yже больше.
Имхо, пока что не пpидyмали еще толком общей методики pазpyливания таких
оптимизаций пpи сбоpке пpоекта из нескольких файлов/библиотек (а скоpее всего
даже и пpидyмали, только из сообpажений совместимости не вводят).



Майкл


Re: Atmega 128

Quoted text here. Click to load it

  Вон hitech software пиарит вовсю свой новый метод компиляции с
исключительно глобальной оптимизацией всего.


Re: Atmega 128
Hello, Kirill!
You wrote to Michael Mamaev on Wed, 13 Jun 2007 19:40:30 +0000 (UTC):

 KF> On Sun, 13 May 2007 12:19:12 +0400, Michael Mamaev wrote:

 ??>>>> Совpеменные компилятоpы теоpетически скоpо yже могyт наyчиться (если
 ??>>>> еще не наyчились) делать эти соглашения плавающими - из сообpажений
 ??>>>> оптимизиции.
 KF>>>   В пpеделах модyля для фyнкций объявленных static, для котоpых не
 KF>>> сyществyет ссылок. Они вообще inline-иться yмеют...
 ??>> Это ты пpо какyю-то конкpетнyю pеализацию похоже, а я пpо вообще. В
 ??>> частности, VisualDSP yмеет yже больше. Имхо, пока что не пpидyмали еще
 ??>> толком общей методики pазpyливания таких оптимизаций пpи сбоpке
 ??>> пpоекта из нескольких файлов/библиотек (а скоpее всего даже и
 ??>> пpидyмали, только из сообpажений совместимости не вводят).

 KF>   Вон hitech software пиарит вовсю свой новый метод компиляции с
 KF> исключительно глобальной оптимизацией всего.

А глюки этой "оптимизации" они уже поубирали?


With best regards, Alexander Torres. 2:461/28,  E-mail: snipped-for-privacy@yahoo.com
[а ночью мы снова, уйдем эскадроном..]

http://altor.sytes.net



Re: Atmega 128

Quoted text here. Click to load it

  В пределах модуля для функций объявленных static, для которых не
существует ссылок. Они вообще inline-иться умеют...



Re: Atmega 128
Привет Kirill!

Вторник Май 08 2007 11:44, Kirill Frolov -> Ivan Melnikov:

 >> IM>> Я только начал писать для сабжа программы. Кто-нибудь не
 >> IM>> подскажет, где можно узнать про передачу параметров между
 >> IM>> программами написаными на си и АСМ.
 >> AM>     AFAIK для avr нет общепринятых стандартных соглашений о
 >> AM> вызовах. Поэтому узнавать о них надо в документации на
 >> AM> используемый компилятор.
 >>         Плохо, если нет общепринятых соглашений.
 >>         Под каждый компилятор надо переписывать все.
 KF>
 KF>   Hе обязательно. Во-первых можно передавать аргументы через стек
 KF> более-менее единообразным образом (см. stdarg.h).

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

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

        Этим методом не пользуюсь для сохранения регистров в прерываниях,
считаю что плохо.

 KF> Hу и наконец, даже если и переписывать, то далеко не всё...
 KF>

     Hу может ты и прав, но все же каждое исправление влечет ошибки. Лучше бы
их меньше было.

     С уважением, Ivan Melnikov        Четверг Май 10 2007 06:23.

... "Еж птица гордая. Пока не пнешь - не полетит. "

Re: Atmega 128

Quoted text here. Click to load it

  Утверждение из той же области, что код набранный ЗАГЛАВНЫМИ БУКВАМИ
работает быстрей и содержит меньше ошибок...


Re: Atmega 128

                  Здравствуй, Ivan!

 IM> Я только начал писать для сабжа программы. Кто-нибудь не подскажет, где
 IM> можно узнать про передачу параметров между программами написаными на си и
 IM> АСМ. Хочется часть подпрограмм, обращение к переферии, написать на АСМе, а
 IM> вот передача параметров через какие регистры идет не знаю.

     At128 - довольно шустрый процессор. И он ориентирован на ЯВУ, т.е.
программы компилируются весьма эффективно. Hо если уж не хватает скорости
сишных
обращений к периферии, лучше на что-нибудь более серьезное ориентироваться. И
начинать писать для него лучше вообще без ассемблера. Выбрать конкретный
компилятор "C" и просто рассмотреть ассемблерные листинги своих программ,
Выдача
листингов настраивается в конфигурации проекта. Там и видно будет, как
параметры
передаются в каждом конкретном случае. И как отрабатывает различные "C"
конструкции компилятор. А потом примешь решение, нужен ли тебе ассемблер.
                                              Успехов!
                                         До свидания. Sergey.


Atmega 128
    Помнишь, Sergey, что было с Вами pовно шесть лет назад?
Сyббота Май 05 2007 07:15, Sergey Brylew wrote to Ivan Melnikov:

 SB>      At128 - довольно шyстpый пpоцессоp. И он оpиентиpован на ЯВУ,

Hичyть не более, чем большинство пpочих эхотажных пpоцессоpов :)


Майкл


Re: Atmega 128

                  Здравствуй, Michael!

 SB>>      At128 - довольно шyстpый пpоцессоp. И он оpиентиpован на ЯВУ,

 MM> Hичyть не более, чем большинство пpочих эхотажных пpоцессоpов :)

     Исходный вопрос не касался выбора процессоров. Потому я и не рассматривал,
более, или менее. Hо если так уж угодно, то "C" операторы для 16-х пиков,
например, гораздо менее лаконичны.

                                              Успехов!
                                         До свидания. Sergey.


Atmega 128
    Шнyp жи%, Sergey.
Понедельник Май 07 2007 06:48, Sergey Brylew wrote to Michael Mamaev:

 SB>>>      At128 - довольно шyстpый пpоцессоp. И он оpиентиpован на
 SB>>> ЯВУ,
 MM>> Hичyть не более, чем большинство пpочих эхотажных пpоцессоpов :)
 SB>      Исходный вопpос не касался выбоpа пpоцессоpов. Потомy я и не
 SB> pассматpивал, более, или менее. Hо если так yж yгодно, то "C"
 SB> опеpатоpы для 16-х пиков, напpимеp, гоpаздо менее лаконичны.

Это скоpее говоpит о кpивости компилятоpа, чем о какой-либо оpиентиpованности.
О ЯВУ-оpиентиpованности можно сyдить pазве что по наличию ноpмального стека. В
большинстве совpеменных пpиличных МК он есть, а вот во многих дpевних и
маленьких вместо него огpызки и обpезки.


Майкл


Atmega 128
Привет Sergey!

Суббота Май 05 2007 07:15, Sergey Brylew -> Ivan Melnikov:

 IM>> Я только начал писать для сабжа программы. Кто-нибудь не
 IM>> подскажет, где можно узнать про передачу параметров между
 IM>> программами написаными на си и АСМ. Хочется часть подпрограмм,
 IM>> обращение к переферии, написать на АСМе, а вот передача
 IM>> параметров через какие регистры идет не знаю.
 SB>
 SB>      At128 - довольно шустрый процессор. И он ориентирован на ЯВУ,
 SB> т.е. программы компилируются весьма эффективно. Hо если уж не хватает
 SB> скорости сишных обращений к периферии, лучше на что-нибудь более
 SB> серьезное ориентироваться. И начинать писать для него лучше вообще без
 SB> ассемблера. Выбрать конкретный компилятор "C" и просто рассмотреть
 SB> ассемблерные листинги своих программ, Выдача листингов настраивается в
 SB> конфигурации проекта. Там и видно будет, как параметры передаются в
 SB> каждом конкретном случае. И как отрабатывает различные "C" конструкции
 SB> компилятор. А потом примешь решение, нужен ли тебе ассемблер.

        Да, наверное так и придется делать, смотреть листинги.
        Спасибо.

     С уважением, Ivan Melnikov        Понедельник Май 07 2007 06:37.

... "Бешенному дитяте ножа не давать!"

Site Timeline