Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Примеры IAR4.12
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
algidim
Поставил IAR4.12. А примеров использования компилятора там нет. ( Подскажите откуда их можно скачать.(типа работа с EEPROM, использовани ASM и тд)
IgorKossak
Простенькие примеры лежат в папке \avr\tutor.
Более подробно о создании проектов, примеры программирования и пр. можно почитать в документации, в частности в EWAVR_UserGuide.pdf в папке \avr\doc
algidim
Господа, подскажите пожалуйста ,
почему при написании просто

#include <ioavr.h>
#include <inavr.h>


int main( void )
{
return 0;
}
В опциях проекта выбираю тип контроллера и генирацию map файла.
При компиляции программы в map файле написано, что программа занимает

38 bytes of CODE memory (+ 50 range fill )
64 bytes of DATA memory
А при компиляции программы:
int main( void )
{

unsigned char ind;
ind=10;
while(ind--){PORTD=ind;};

return 0;
}

52 bytes of CODE memory (+ 50 range fill )
64 bytes of DATA memory (+ 1 absolute )

Я непонимаю, почему переменная ind зпнимает столько много памяти, да еще распологается в сегменте кода ?
Помогите пожалуйста разобраться ohmy.gif
Сергей Борщ
Цитата(algidim @ Jul 18 2006, 14:13) *
Я непонимаю, почему переменная ind зпнимает столько много памяти, да еще распологается в сегменте кода ?
Помогите пожалуйста разобраться ohmy.gif
Это шутка такая?
А программа while(ind--){PORTD=ind;}; располагается где же?

переменная объявлена внутри функции (локальная), поэтому размещается в стеке (скорее всего в тех 64 bytes of DATA memory). (+ 1 absolute ) - это PORTD
algidim
Это не шутка. Я просто новичек. Скажите пожалуйста. Т.е компилятор создает в ОЗУ стек
в даном случае 64 byte и все локальные переменные помещает туда ?
А почему если созбать хоть 1 глобальную переменную размер кода резко повышается, а если больше, то с каждой созданной переменной unsigned char он повышается на 6 byte,а размер данных на 1 byte ?
Сергей Борщ
Цитата(algidim @ Jul 18 2006, 16:47) *
Это не шутка. Я просто новичек. Скажите пожалуйста. Т.е компилятор создает в ОЗУ стек
в даном случае 64 byte и все локальные переменные помещает туда ?

Да. Но кроме локальных переменных на стеке хранятся адреса возвратов из подпрограмм и временные переменные (если они нужны компилятору в процессе выполнения кода).
Цитата
А почему если созбать хоть 1 глобальную переменную размер кода резко повышается, а если больше, то с каждой созданной переменной unsigned char он повышается на 6 byte,а размер данных на 1 byte ?
Можно с примерами? Если глобальная переменная инициализирована при объявлении, то необходим код для инициализации и для хранения инициализирующего значения. А если просто
Код
int a, b, c;
int main (int) {
  return 1;
}
и
int a, b, c, d, e, f;
int main (int) {
  return 1;
}
То размер кода должен остаться неизменным.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.