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

 
 
 
Reply to this topicStart new topic
> Компиляция исходника в "неродном" компиляторе
Edge
сообщение Feb 26 2006, 18:59
Сообщение #1





Группа: Новичок
Сообщений: 5
Регистрация: 16-11-05
Пользователь №: 10 900



Компиляция исходника в неродном компиляторе приводит к ошибкам, зачастую к множеству ошибок (в зависимости от выбранного компилятора)...
Родной компилятор не раздобыть никак, да и устаревший больно (99г)
Что проще, не заморачиваясь на вылавливание различий в синтаксисе написать всё по-новой, или всё-таки попробовать перелопатить старое?
Контроллер 90S2313 обмен по I2C с ЕЕПРОМ 24С16...исходник на С.
Go to the top of the page
 
+Quote Post
vet
сообщение Feb 26 2006, 19:38
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Проще поправить уже имеющееся. Отличий в синтаксисе компиляторов одного языка - не так уж и много.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
d71
сообщение Feb 27 2006, 02:48
Сообщение #3


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

Группа: Новичок
Сообщений: 91
Регистрация: 24-12-05
Из: г. Благовещенск
Пользователь №: 12 614



а по мне так лучше переписать, частенько я не изобретаю колесо, а собираю проект из чужих кусочков проектов...

если иар и обмен по и2с с памятью, могу дать готовый набор костей, проверен и просто копируется из проекта в проект


--------------------
нет ничего невозможного, есть трудные пути... других не ищем
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 27 2006, 04:46
Сообщение #4


кекс
******

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



Цитата(d71 @ Feb 27 2006, 04:48) *
а по мне так лучше переписать, частенько я не изобретаю колесо, а собираю проект из чужих кусочков проектов...

различий между компилятором 99г. и нынешним будет разве что в объявлениях прерываний и может быть еще в объявлениях портов, такую правку изобретением колеса назвать нельзя, imho все-таки проще подправить имеющиеся исходники.
Go to the top of the page
 
+Quote Post
d71
сообщение Feb 27 2006, 04:59
Сообщение #5


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

Группа: Новичок
Сообщений: 91
Регистрация: 24-12-05
Из: г. Благовещенск
Пользователь №: 12 614



я имел ввиду логику, иногда ну так сложно разбираться в чужом sad.gif
скажем не изобретая колеса, перекрасить велосипед. о


--------------------
нет ничего невозможного, есть трудные пути... других не ищем
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Feb 27 2006, 06:53
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



80% проблем решиться при подключении правильных заголовочных
файлов
и по 10% на переобъявление с новым синтаксисом прерывапий
и флэшовых констант.
основные проблемы будут как раз со всякими указателями на
флэш и операциями с ними.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Edge
сообщение Feb 27 2006, 20:16
Сообщение #7





Группа: Новичок
Сообщений: 5
Регистрация: 16-11-05
Пользователь №: 10 900



Количество ошибок в CV зашкаливает за 250... в ICC поменьше
Такие вот обороты приводят компиляторы в ступор-

#define COL1P PORTD-32,0
#define COL1D DDRD-32,0
...
...
(пропущенны строки)
void Mux(void)
{
setbit(COL1P);
setbit(COL1D);
MuxLo();
clrbit(COL1D);
clrbit(COL1P);

Написать всё по-новой мне ещё неподсилу...
Go to the top of the page
 
+Quote Post
vet
сообщение Feb 27 2006, 20:21
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Цитата(Edge @ Feb 27 2006, 23:16) *
Количество ошибок в CV зашкаливает за 250... в ICC поменьше

Ну и ничего страшного, это в массе своей одни и те же ошибки.
Цитата(Edge @ Feb 27 2006, 23:16) *
Такие вот обороты приводят компиляторы в ступор-

#define COL1P PORTD-32,0
#define COL1D DDRD-32,0
...
...
(пропущенны строки)
void Mux(void)
{
setbit(COL1P);
setbit(COL1D);
MuxLo();
clrbit(COL1D);
clrbit(COL1P);

Меняем (для CodeVision):

setbit(COL1P); на PORTD.0 = 1;
clrbit(COL1P); на PORTD.0 = 0;
setbit(COL1D); на DDRD.0 = 1;
clrbit(COL1D); на DDRD.0 = 0;

Всё, в общем-то, очевидно.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
Edge
сообщение Feb 28 2006, 21:43
Сообщение #9





Группа: Новичок
Сообщений: 5
Регистрация: 16-11-05
Пользователь №: 10 900



Да, спасибо теперь это и мне стало очевидно.... smile.gif
Новая напасть

register UCHAR Colour1;
register UCHAR Colour2;
register UCHAR Colour3;
register UCHAR Colour4;
register UINT TblPtr; /* 'pointer' into control data table */
register UINT TblPtr0; /* 'pointer' into control data table main routine */
register UCHAR LastDelay; /* last delay value */
register UCHAR LoopCnt; /* loop counter */
register UINT LoopStart; /* 'pointer' to loop start */
register UINT I2cAddr; /* I2C read address */
register UCHAR sp; /* 'stack pointer', index into Stack */
register UINT Stack[4]; /* 'subroutine' stack */
register UINT Subs[20]

Немогу понять чему это будет соответствовать в современном компиляторе...
Go to the top of the page
 
+Quote Post
defunct
сообщение Feb 28 2006, 23:16
Сообщение #10


кекс
******

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



Цитата(Edge @ Feb 28 2006, 23:43) *
Немогу понять чему это будет соответствовать в современном компиляторе...


register скорее всего - volatile (хотя может быть и __regvar) сложно сказать надо смотреть по контексту.
остальное:

#define UCHAR unsigned char
#define UINT unsigned int

Сообщение отредактировал defunct - Feb 28 2006, 23:20
Go to the top of the page
 
+Quote Post
vet
сообщение Mar 1 2006, 07:13
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 550
Регистрация: 16-06-04
Из: Казань
Пользователь №: 32



Edge
в CodeVision register при глобальной переменной размещает её в регистрах R2-R14. В остальных случаях этот модификатор игнорируется.
Если не мешает - оставьте, как есть.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
Edge
сообщение Mar 2 2006, 18:20
Сообщение #12





Группа: Новичок
Сообщений: 5
Регистрация: 16-11-05
Пользователь №: 10 900



Спасибо всем за помощь.
Вообщем понемногу продираюсь, но на самом деле не всё так просто...
К примеру
setbit(COL1P);
setbit(COL1D);
MuxLo();
clrbit(COL1D);
clrbit(COL1P);
Казалось бы очевидно...если бы не хедер
#define setbit(address, bit) asm { /* Macro to set a I/O bit */\
SBI address-$20,bit\
}
#define clrbit(address, bit) asm { /* Macro to clear an I/O bit */\
CBI address-$20,bit\
}
... smile.gif
И со всем остальным не так всё легко...
Да оно и понятно сложно давать какие-либо рекомендации по кускам вырванным из контекста...
Но всё равно спасибо.
Go to the top of the page
 
+Quote Post

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

 


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


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