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

 
 
> Hi-Tech PRO PIC10/12/16 V9.65PL1 & PCLATH
ViKo
сообщение Dec 3 2009, 14:45
Сообщение #1


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Что сделать, чтобы компилятор не сбрасывал биты выбора страниц памяти в PCLATH там, где не надо (они и так всегда сброшены). Пример его работы:

Код
  0009    120A     BCF 0xa, 0x4
  000A    118A     BCF 0xa, 0x3
  000B    27F4     CALL 0x7f4
  000C    120A     BCF 0xa, 0x4
  000D    118A     BCF 0xa, 0x3
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
xemul
сообщение Dec 4 2009, 14:35
Сообщение #2



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(ViKo @ Dec 3 2009, 17:45) *
Что сделать, чтобы компилятор не сбрасывал биты выбора страниц памяти в PCLATH

Предложите htsoft'у 100% алгоритм определения при компиляции
Цитата
там, где не надо

и они с удовольствием его реализуют.
Пока их компиляторы для пиков перед вызовом функций безусловно устанавливают PCLATH на требуемую страницу.
Зачем? Из-за ограничений архитектуры мелких пиков. Посмотрите, во что развернётся обращение к const или к (*)(), если объект обращения живёт на другой странице.
Вы таким не пользуетесь? А кому-то оно надо.
Go to the top of the page
 
+Quote Post
ViKo
сообщение Dec 4 2009, 15:58
Сообщение #3


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(xemul @ Dec 4 2009, 16:35) *
Предложите htsoft'у 100% алгоритм определения при компиляции
и они с удовольствием его реализуют.

А как я, программируя на ассемблере, всегда знал, на какой странице нахожусь?
Нужно пробежаться по коду еще раз и посмотреть, где находишься при вызове (переходе), в каком состоянии PCLATH и в каком он должен быть для вызова (перехода). А может быть, и не нужно "еще раз...", а сразу при генерации кода (как это делается - не в моей компетенции).
Точно нельзя какую-нибудь опцию подправить, чтоб было, как хочу? smile.gif
Go to the top of the page
 
+Quote Post
xemul
сообщение Dec 4 2009, 16:32
Сообщение #4



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(ViKo @ Dec 4 2009, 18:58) *
А как я, программируя на ассемблере, всегда знал, на какой странице нахожусь?
Нужно пробежаться по коду еще раз и посмотреть, где находишься при вызове (переходе), в каком состоянии PCLATH и в каком он должен быть для вызова (перехода). А может быть, и не нужно "еще раз...", а сразу при генерации кода (как это делается - не в моей компетенции).

"Не читал, но осуждаю."
Архитектура мелких пиков очень неудобна для оптимизирующих компиляторов организацией и памяти программ, и памяти данных, и способами адресации. "где находишься при вызове (переходе)" компилятору вообще должно быть неинтересно - это проблема линкера, но из-за особенностей архитектуры ему приходится думать о каком-то PCLATH.
Поэтому и компиляторов под них чуть да ничего. А вменяемых компиляторов ещё меньше.
Цитата
Точно нельзя какую-нибудь опцию подправить, чтоб было, как хочу? smile.gif

Пока нет. Точно.
Может когда-нить htsoft и допилит Omniscient Code GenerationTM до состояния, когда качество его кода начнёт устраивать мастеров ассемблера, но, имхо, мелкие пики отомрут раньше.
Go to the top of the page
 
+Quote Post



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

 


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


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