реклама на сайте
подробности

 
 
> Компилятор в IAR, ньюансы обращения к переменным
king2
сообщение Nov 22 2006, 02:23
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 255
Регистрация: 17-08-06
Из: Москва
Пользователь №: 19 646



Снова не пойму как IAR работает с переменными...
Оптимизация вся выключена, дабы не влиять излишне.

Имеем такой вот код:

Код
    111                    tmpByte <<= 1;
   \   00000464   9100....           LDS     R16, tmpByte
   \   00000468   0F00               LSL     R16
   \   0000046A   9300....           STS     tmpByte, R16
    112                    tmpByte |= tmp_bit;
   \   0000046E   8108               LD      R16, Y
   \   00000470   ....               LDI     R30, LOW(tmpByte)
   \   00000472   ....               LDI     R31, (tmpByte) >> 8
   \   00000474   8110               LD      R17, Z
   \   00000476   2B10               OR      R17, R16
   \   00000478   8310               ST      Z, R17


Почему компилятор, имея в регистре значение переменной, и следующую операцию с ней же, тем не менее сначала сохраняет ее, а потом загружает? Переменная не volatile.
Почему в первом и втором случае обращение к одной и той же переменной делается по разному??
Как избежать такого извращенного обращения к переменным?

Эквивалентный (нормальный) код:
Код
    114                    tmpByte = (tmpByte<<1) | tmp_bit;
   \   0000047A   9100....           LDS     R16, tmpByte
   \   0000047E   0F00               LSL     R16
   \   00000480   8118               LD      R17, Y
   \   00000482   2B10               OR      R17, R16
   \   00000484   9310....           STS     tmpByte, R17


Спасибо заранее!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- king2   Компилятор в IAR   Nov 22 2006, 02:23
- - rezident   ИМХО потому что запись КодtmpByte <<= 1; ...   Nov 22 2006, 02:42
|- - king2   А почему оно в одном случае загружает переменную и...   Nov 22 2006, 03:26
||- - IgorKossak   Цитата(king2 @ Nov 22 2006, 02:26) А поче...   Nov 22 2006, 10:50
||- - dxp   ЦитатаЦитата(king2 @ Nov 22 2006, 02:26) ...   Nov 22 2006, 11:57
|- - Perepic   Цитата(rezident @ Nov 22 2006, 02:42) ИМХ...   Dec 18 2006, 16:58
|- - _Bill   Цитата(Perepic @ Dec 18 2006, 16:58) Цита...   Dec 19 2006, 23:17
||- - Perepic   Цитата(_Bill @ Dec 19 2006, 23:17) Попроб...   Dec 20 2006, 08:16
||- - _Bill   Цитата(Perepic @ Dec 20 2006, 08:16) Цита...   Dec 20 2006, 11:50
||- - SasaVitebsk   Цитата(_Bill @ Dec 20 2006, 11:50) Все пр...   Dec 21 2006, 02:12
||- - Perepic   Цитата(SasaVitebsk @ Dec 21 2006, 02:12) ...   Dec 21 2006, 12:07
|||- - HARMHARM   Цитата(Perepic @ Dec 21 2006, 11:07) Цита...   Dec 21 2006, 18:48
|||- - IgorKossak   Цитата(HARMHARM @ Dec 21 2006, 17:48) Цит...   Dec 26 2006, 11:15
||- - _Bill   Цитата(SasaVitebsk @ Dec 21 2006, 02:12) ...   Dec 21 2006, 16:30
|- - Rst7   Цитата(Perepic @ Dec 18 2006, 15:58) Инте...   Dec 26 2006, 16:09
|- - zltigo   Цитата(Rst7 @ Dec 26 2006, 15:09) Имеет с...   Dec 26 2006, 16:27
||- - Rst7   Цитата(zltigo @ Dec 26 2006, 15:27) Цитат...   Dec 26 2006, 16:31
||- - _Bill   Цитата(zltigo @ Dec 26 2006, 16:27) Цитат...   Dec 27 2006, 10:27
||- - IgorKossak   Цитата(_Bill @ Dec 27 2006, 09:27) Вообще...   Dec 27 2006, 14:18
||- - dxp   Цитата(IgorKossak @ Dec 27 2006, 17:18) Ц...   Dec 27 2006, 14:48
||- - zltigo   Цитата(dxp @ Dec 27 2006, 13:48) Иными сл...   Dec 27 2006, 15:41
|||- - Сергей Борщ   Цитата(zltigo @ Dec 27 2006, 14:41) Цитат...   Jan 7 2007, 01:33
|||- - zltigo   Цитата(Сергей Борщ @ Jan 7 2007, 00:33) P...   Jan 7 2007, 02:03
||- - _Bill   Цитата(dxp @ Dec 27 2006, 14:48) Цитата(I...   Dec 27 2006, 19:03
||- - dxp   Цитата(_Bill @ Dec 27 2006, 22:03) Это не...   Dec 28 2006, 07:32
||- - zltigo   Цитата(dxp @ Dec 28 2006, 06:32) И как, н...   Dec 28 2006, 12:13
|||- - IgorKossak   Цитата(dxp @ Dec 28 2006, 06:32) И как, н...   Dec 28 2006, 12:29
||- - _Bill   Цитата(dxp @ Dec 28 2006, 07:32) И как, н...   Jan 2 2007, 22:33
||- - SasaVitebsk   Цитата(dxp @ Dec 28 2006, 08:32) Борланд ...   Jan 4 2007, 00:22
||- - _Bill   Цитата(SasaVitebsk @ Jan 4 2007, 00:22) Ц...   Jan 4 2007, 23:20
||- - SasaVitebsk   Цитата(_Bill @ Jan 5 2007, 00:20) Не стои...   Jan 5 2007, 03:58
|- - Perepic   Цитата(Rst7 @ Dec 26 2006, 16:09) В принц...   Dec 27 2006, 08:44
- - SasaVitebsk   На этот раз для меня не понятный момент. До этого ...   Dec 7 2006, 23:06
|- - rezident   Цитата(SasaVitebsk @ Dec 8 2006, 01:06) С...   Dec 8 2006, 01:01
|- - zltigo   Цитата(rezident @ Dec 8 2006, 00:01) заме...   Dec 8 2006, 02:52
- - SasaVitebsk   Информация к размышлению. Объявление не менял. Пом...   Dec 8 2006, 03:12
|- - _Bill   Цитата(SasaVitebsk @ Dec 8 2006, 03:12) И...   Dec 8 2006, 12:16
|- - SasaVitebsk   Цитата(_Bill @ Dec 8 2006, 12:16) Все пра...   Dec 8 2006, 13:24
|- - _Bill   Цитата(SasaVitebsk @ Dec 8 2006, 13:24) В...   Dec 8 2006, 17:31
- - SasaVitebsk   Спасибо, разъяснили доступно. Извините за наглость...   Dec 11 2006, 21:34
|- - zltigo   Цитата(SasaVitebsk @ Dec 11 2006, 20:34) ...   Dec 11 2006, 22:38
- - Perepic   Или вот еще, тоже шедевр. Блин, чем больше в дизас...   Dec 18 2006, 18:01
|- - dxp   Цитата(Perepic @ Dec 18 2006, 21:01) Или ...   Dec 19 2006, 09:52
|- - Perepic   Цитата(dxp @ Dec 19 2006, 09:52) Код, кот...   Dec 19 2006, 11:29
- - SasaVitebsk   Тем не менее местами просто сказка и песня! ...   Dec 18 2006, 23:36


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 18:17
Рейтинг@Mail.ru


Страница сгенерированна за 0.01415 секунд с 7
ELECTRONIX ©2004-2016