Разработка, производство и продажа радиоэлектронной аппаратуры
|
Карта сайта
|
Пишите нам
|
В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:
jobsmp@pochta.ru
Телесистемы
|
Электроника
|
Конференция «Микроконтроллеры и их применение»
Всё проще. Компилятор если имеет возможность посчитать использовать константу, то использует (не только для смещений). В других случаях перенесёт расчёт в рантайм.
Отправлено
Vit
(77.123.100.54)
08 мая 2010, г. 13:11
В ответ на:
Вот еще насчет смещений. Компилятору, чтобы положить Х.., тьфу, "величину Х", в Мassiv[10] - не надо вычислять смещение (Massiv+10), т.к. начальный адрес &Massiv[0] постоянный и никуда не убежит. Компилятор "в уме" посчитает сумму начального адреса и смещение до 5-го элемента (в единицах хранения массива), и сразу типа MOV ADDR, X. А для доступа по Указателю компилятор бессилен предположить что сейчас содержит указатель, поэтому сгенерирует в асм-коде "честное" вычисление адреса [10], и МК будет корячиться тратить время и код под вычисления.
отправлено
VasilyS
08 мая 2010, г. 12:57
к примеру сдвиг - 1<<BITNo для константного BITNo заменится посчитанным числом.
Составить ответ
|
Вернуться на конференцию
Ответы
Кстати, вот забыл спросить об указателе на функции. Есть ведь некоторая разница между последовательно расположенным массивом данных и программой ,которая что угодно моет делать. Как с указателями на функции ,то же несколько байт в которых адрес начала?
-
Двоешник
(08.05.2010, 18:38:14
193.200.150.125
,
пустое
)
Да, просто адреса начала функций. Все возвращаемые значения и входные аргументы - это только для компилятора, чтобы он распихал их перед вызовом функции в нужные регистры, и знал что делать с возвращаемыми данными. А сами указатели на функции (например, это хорошо видно когда они оформлены в виде массива) - они просто адреса, и в них нет доп. информации о вызываемой функции.
-
VasilyS
(08.05.2010, 19:10:45
80.92.96.25
,
пустое
)
Отправка ответа
Имя*:
Пароль:
E-mail:
Тема*:
Сообщение:
Ссылка на URL:
URL изображения:
если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
умножьте 3 на единицу:
Перейти к списку ответов
|
Конференция
|
Раздел "Электроника"
|
Главная страница
|
Карта сайта
Web
telesys.ru