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

 
 
> Что это - глюк Keil или я чего-то не понял, Почему компилятор переменные заганяет в регистры?
IF_P
сообщение May 5 2008, 19:05
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



Две переменные
D:0006H SYMBOL old
X:7800H SYMBOL n_char
D:0004H SYMBOL vv_dat

загнаны в регистры. Почему? Во Franklin'е такого замечено не было. Как избавиться от этого?

После выполнения ф-ции atoi() получаем ерунду. Видимо эти р-ры в ф-ции тоже используются.
Прикрепленные файлы
Прикрепленный файл  ttt.zip ( 7.37 килобайт ) Кол-во скачиваний: 44
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
defunct
сообщение May 6 2008, 03:36
Сообщение #2


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Цитата(IF_P @ May 5 2008, 22:05) *
Почему? Во Franklin'е такого замечено не было. Как избавиться от этого?

А почему нет?
Что запрещает разместить эти локальные переменные в регистрах?
И в чем глубокий смысл этого "=" :

return (vv_dat=atoi(IN_ASCII_BUFF_L));

Цитата
После выполнения ф-ции atoi() получаем ерунду. Видимо эти р-ры в ф-ции тоже используются.

нет причина в чем-то другом. Размещение этих переменных (old, vv_dat) никак не могут сказываться на результате atoi.
Go to the top of the page
 
+Quote Post
IF_P
сообщение May 6 2008, 06:28
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 136
Регистрация: 2-01-06
Пользователь №: 12 772



[quote name='defunct' date='May 6 2008, 06:36' post='406878']
А почему нет?
Что запрещает разместить эти локальные переменные в регистрах?
И в чем глубокий смысл этого "=" :

return (vv_dat=atoi(IN_ASCII_BUFF_L));
[/quote]
"Тайного смысла" здесь нет. Раньше vv_dat вычислялось в теле п/п. Потом пошли изменения. при отладке поставил так, вот оно и осталось. Согласен, уберу "vv_dat=".

нет причина в чем-то другом. Размещение этих переменных (old, vv_dat) никак не могут сказываться на результате itoa.
[/quote]
Да, причина не в них. Я заменил локальную переменную глобальной и получил тоже самое:
Vent_revers=0xC355 после выполнения atoi().
А как в отладчике посмотреть память DATA, IDATA?
Прикрепленные файлы
Прикрепленный файл  prog3.rar ( 1.77 килобайт ) Кол-во скачиваний: 47
 
Go to the top of the page
 
+Quote Post
Палыч
сообщение May 6 2008, 06:53
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(IF_P @ May 6 2008, 09:28) *
А как в отладчике посмотреть память DATA, IDATA?
View -> Memory window
В окне Memory указать адрес со спецификатором памяти
B Bit–addressable RAM memory (BIT)
C Code memory (CODE)
D Internal directly-addressable RAM memory of the 8051 (DATA)
I Internal indirectly-addressable RAM memory of the 8051 (IDATA)
X External RAM memory (XDATA)
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 1st July 2025 - 03:07
Рейтинг@Mail.ru


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