Перейти к содержанию
    

кто поможет ИАР освоить небесплатно?

У меня есть кусочек проги, вот например и первый вопрос

 

C_task void main(void)

{

это начало программы какой- то, что тут делает C_task ? Где про это можно прочесть? Где в хелпах?

 

второй вопрос- хочу начать писать пока что на асме в ИАРе, какие то префиксы ставить перед началом кода типа #asm #endasm?

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

Всем спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня есть кусочек проги, вот например и первый вопрос

 

C_task void  main(void)

  {

это начало программы какой- то, что тут делает C_task ? Где про это можно прочесть? Где в хелпах?

 

второй вопрос- хочу начать писать пока что на асме в ИАРе, какие то префиксы ставить перед началом кода типа #asm #endasm?

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

Всем спасибо.

 

Сам только начинаю переходить на С...

по поводу C_task это как-бы обьявление главного цикла main где-то писалось вроде бы в AVR035

http://www.efind.ru/ad/adframe.php?n=a40f2...3&target=_blank

по поводу совмещения с ASM пока нашел только это

www.prochild.com/eng/data/avr/appnotes/pdf/AVR034.pdf

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

C_task void  main(void)

  {

это начало программы какой- то, что тут делает C_task ? Где про это можно прочесть? Где в хелпах?

Цитата из перевода AVR035.pdf (http://www.gaw.ru/html.cgi/txt/app/micros/avr/AVR035.htm)

Функция main обычно содержит основной цикл программы. В большинстве случаев функция main не вызывается из других функций и нет необходимости предварительно сохранять содержимое какого-либо регистра перед входом в нее. Таким образом, функция main может быть объявлена как C_task. Это сэкономит пространство стека и размер кода:

 

__C_task void main(void) /* Объявление main() как C_task*/

{

}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что с сылкой на AVR035 не то :)

http://www.gaw.ru/html.cgi/txt/app/micros/avr/AVR035.htm

вот чего там пишут:

The main function usually contains the main loop of the program.In most cases no functions are calling the main function,and there are no need to preserve any registers when entering it.The main function can therefore be declared as C_task.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

т.е. C_task при написании проги мне принять как за правило и всегда практически его вставлять? вот нашёл тоже-

C_task - это указание компилятору не сохранять регистры при вызове

функции main()..

См. описание на компилятор. Это дает возможность немного уменьшить код

программы.

Получается, его всегда писать и всё тут?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

The main function can therefore be declared as C_task.

Не понятна фраза эта, что значит гл. ф-я может быть следовательно декларирована как C_task??? Как это понять? Она же объявлена как майн и всё тут?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, диспут как говориться - удался!!!

 

Уважаемый Метценгерштейн по всей видимости Вам для обучения и дальнейшей практической работы сперва необходимо определиться с выбором литературы по языку 'C' (как и другие учасники данной дискуссии я бы рекомендовал авторов Керниган, Ричи) и выбор версии среды разработки IAR (не ниже EWAVR-EV-310A, а лучше всего брать самую 'свежую' на сайте разработчика. По поводу превращения ее в нормально работающую - читайте темы местного форума).

Да прочитайте для начала статью (это на русском):

http://chipinfo.ru/literature/chipnews/200010/15.html

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

 

Удачи!

 

P.S. Посмотрите так же тему:

http://forum.electronix.ru/index.php?showt...443entry45443

там мной прикреплен файл Programm_Example.rar это тоже примеры IAR проектов на 'C'.

Изменено пользователем BVU

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо за советы, avr123 я уже изучил, прошёлся по примерам многим, там уклон на CV. Хорошо, начнём с простого, есть работающий кусок на АСМе под ЛСД. Как мне его запустить и откомпелить в ИАРе? Потом, как смешивать Си, если я захочу его добавить к проекту на асме? Тоже самое пытался проделать с CV- не хочет компилиться. Да и говорят, CV- слаб для профессиональной работы. Си я прочитал, но нужна уже практика в каком- то компиляторе, почему бы не в ИАРе?

Насколько я пользовался Си и Асмом, Асм добавляется к Си, а не на оборот. Есть такая книга, классика Си Керринган и Ричи "Введение в Си", самое то для начала. А потом все остальное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Согласен про эту книгу, просто не найти её в инете, может кто ссылку даст? В магазин зашё вчера- ниту книг ни этой ни по ИАРу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Сочувствую Вам, Метценгерштейн. Много Вам информации в эту ветку накидали.

У меня есть кусочек проги, вот например и первый вопрос

 

C_task void main(void)

{

это начало программы какой- то, что тут делает C_task ? Где про это можно прочесть? Где в хелпах?

т.е. C_task при написании проги мне принять как за правило и всегда практически его вставлять? вот нашёл тоже-

C_task - это указание компилятору не сохранять регистры при вызове

функции main()..

См. описание на компилятор. Это дает возможность немного уменьшить код

программы.

Получается, его всегда писать и всё тут?

 

Похоже, хорошее ключевое слово C_task. Позволяет экономить стек при длинной цепочке вызовов подпрограмм, оставляя груз за сохранением или контролем информации на плечах программиста. Т.е. по другому можете использовать не только для main(), но и для других подпрограмм (когда станете опытным программером).

 

второй вопрос- хочу начать писать пока что на асме в ИАРе, какие то префиксы ставить перед началом кода типа #asm #endasm?

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

 

Вот как раз - будут ли бодаться и посмотрите в листинге на ассемблере :)

С префиксами сами уж help посмотрите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кстати, посмотрела примеры BVU. Встроенный asm (если он есть в IAR;)), то похоже Вам и не очень нужен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Пойдём немного другим путём- буду читать эту книгу, скачал компилятор Dev-C++, в нём прорабатывать, потом вернёмся к ИАРу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Графическая среда на базе Gnu C под Windows.

Метценгерштейн, может Вам самый простой Turbo C выложить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...