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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Кроссассемблер 51>AVR, Существует?
muravei
сообщение Mar 30 2006, 11:55
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Собственно всеsmile.gif
Go to the top of the page
 
+Quote Post
Petka
сообщение Mar 30 2006, 13:36
Сообщение #2


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

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(muravei @ Mar 30 2006, 15:55) *
Собственно всеsmile.gif


Интересно, а как Вы себе это представляете?
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 30 2006, 16:21
Сообщение #3


кекс
******

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



Цитата(muravei @ Mar 30 2006, 13:55) *
Собственно всеsmile.gif

Архитектуры настолько разные, что imho не стоит и пытаться такое искать.
К примеру если программа C51 интенсивно пользуется переключением регистровых банков, то на AVR такое не реально транслировать... Разные команды, работающие с разнотипными операндами (бит/байт/слово) и имеющие одинаковую мнемонику вообще imho нереально перевести..
Go to the top of the page
 
+Quote Post
muravei
сообщение Mar 31 2006, 08:48
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(defunct @ Mar 30 2006, 19:21) *
Разные команды, работающие с разнотипными операндами (бит/байт/слово) и имеющие одинаковую мнемонику вообще imho нереально перевести..

Но процессор(и ассемблер) то их отличает
Go to the top of the page
 
+Quote Post
defunct
сообщение Mar 31 2006, 13:19
Сообщение #5


кекс
******

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



Цитата
Но процессор(и ассемблер) то их отличает

ну и что? архитектуры отличаются очень очень сильно.
Вот основные отличия C51:
1. Все арифметические действия производятся только с регистром Acc (в AVR с любым из 32х регистров).
2. Нет базово-индексной адресации (в AVR есть - Z+Const), только базовая (@DPTR, @R0)
3. Есть множество прямоадресуемых бит и команды проверки конкретного бита (в AVR такого нет)
4. Двух-уровневый приоритетный контроллер прерываний (в AVR одноуровневый)
5. 4-х режимные таймеры, идеология работы которых сильно отличается от таймеров в AVR.
6. Квазидвунаправленные порты (одновременно и ввод и вывод) в AVR такого нет..
7. Невидимая для прямой адресации область RAM, которая пересекается с адресным пространством SFR
8. Скудный набор арифметичеких команд, т.к. C51 задумывался как битовый процессор (нет даже команды сравнения), поэтому трансляция кода на AVR приведет к неоптимальному использованию команд AVR, что в свою очередь в разы раздует код программы.

Короче говоря, написать кросс-ассемблер такой как Вы хотите - реально, но он будет настолько неоптимально использовать возможности AVR, что целесообразность его использования сведется практически к нулю. Для чипов до 16k памяти программ (ПП) проще вручную (зная алгоритм программы) портировать ассемблерный код C51 на AVR, для чипов же с больше 16k ПП программы обычно пишут на C и проблем с портированием не должно быть вообще.
Go to the top of the page
 
+Quote Post
Harbinger
сообщение Apr 1 2006, 06:04
Сообщение #6


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



Цитата(defunct @ Mar 31 2006, 16:19) *
Для чипов до 16k памяти программ (ПП) проще вручную (зная алгоритм программы) портировать ассемблерный код C51 на AVR, для чипов же с больше 16k ПП программы обычно пишут на C и проблем с портированием не должно быть вообще.

Интересно, есть ли у кого опыт ручного "перевода" ассемблерного кода с 51 на AVR? Моего маловато - но есть подозрение, что объем занимаемой памяти возрастет. Если с 8 К (ровно!:)) до 16 - еще куда ни шло...

Сообщение отредактировал Harbinger - Apr 1 2006, 06:14


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post
vet
сообщение Apr 1 2006, 10:22
Сообщение #7


Знающий
****

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



Harbinger
Как ни странно, перенос прошивки одного из выпускаемых нами приборов с 80C552 на mega8535 практически не изменил размер бинарника - чуть меньше 8кБ в обоих случаях. Обе написаны на ассемблере.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 1 2006, 19:02
Сообщение #8


кекс
******

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



Цитата(Harbinger @ Apr 1 2006, 08:04) *
Интересно, есть ли у кого опыт ручного "перевода" ассемблерного кода с 51 на AVR? Моего маловато - но есть подозрение, что объем занимаемой памяти возрастет. Если с 8 К (ровно!:)) до 16 - еще куда ни шло...

У AVR более гибкая система команд. Да и тонны XCH отпадут. Проверки станут проще.
Так что если переносить с умом, то получается кода меньше чем для C51.. Если же переносить "в лоб" тогда раздуется..
Go to the top of the page
 
+Quote Post
Harbinger
сообщение Apr 2 2006, 06:31
Сообщение #9


старший лаборант
******

Группа: Свой
Сообщений: 2 702
Регистрация: 30-09-05
Из: ЮЗЖД
Пользователь №: 9 097



Хмм, там XCH всего в 2 местах используетсяsmile.gif Пересылок из регистров в аккумулятор и обратно - в самом деле более чем. И операций с битами - немерено. Программа не моя - в наследство досталась.
Другое дело, что с квазидвунаправленным портом придется как-то разбиратьсяsad.gif


--------------------
Китайская комплектация - европейское качество! ;)
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Apr 2 2006, 08:58
Сообщение #10


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(Harbinger @ Apr 1 2006, 09:04) *
Интересно, есть ли у кого опыт ручного "перевода" ассемблерного кода с 51 на AVR? Моего маловато - но есть подозрение, что объем занимаемой памяти возрастет. Если с 8 К (ровно!:)) до 16 - еще куда ни шло...

С 51-м не знаком, но в своё время перевёл около 60 кБ кода с MCS196 на AVR (mega103).
Правда автором прототипа был я же, поэтому знал алгоритм и именно это и было главным.
На перевод потратил около месяца. Потом, когда возникла необходимость расширять, добавлять, исправлять, улучшать, всё-таки переписал проект на С. И вовремя, т. к. возможностей AVR уже не хватило и пришлось портировать всё на ARM.
На этот раз портирование прошло за пару недель.
Go to the top of the page
 
+Quote Post
muravei
сообщение Apr 3 2006, 06:14
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(defunct @ Mar 31 2006, 16:19) *
Цитата
Но процессор(и ассемблер) то их отличает

ну и что? архитектуры отличаются очень очень сильно.
Вот основные отличия C51:
1. Все арифметические действия производятся только с регистром Acc (в AVR с любым из 32х регистров).
2. Нет базово-индексной адресации (в AVR есть - Z+Const), только базовая (@DPTR, @R0)
3. Есть множество прямоадресуемых бит и команды проверки конкретного бита (в AVR такого нет)
4. Двух-уровневый приоритетный контроллер прерываний (в AVR одноуровневый)
5. 4-х режимные таймеры, идеология работы которых сильно отличается от таймеров в AVR.
6. Квазидвунаправленные порты (одновременно и ввод и вывод) в AVR такого нет..
7. Невидимая для прямой адресации область RAM, которая пересекается с адресным пространством SFR
8. Скудный набор арифметичеких команд, т.к. C51 задумывался как битовый процессор (нет даже команды сравнения), поэтому трансляция кода на AVR приведет к неоптимальному использованию команд AVR, что в свою очередь в разы раздует код программы.


Ну если так рассуждать, то и портирование с 51 одного производителя на 51 др. тоже неразрешимая задача.
1. Помоему это достоинство , хуже было бы наоборот.Можно решать двумя способами : в лоб -назначить один регистр акум. и плясать вокруг него , или с умом использовать все 32.
3.Что-то я не понял, а SBRC,SBRS,SBIC ...и т.д.
Думаю все решаемо .Вопрос в том :Ано надо?
Go to the top of the page
 
+Quote Post
defunct
сообщение Apr 3 2006, 16:34
Сообщение #12


кекс
******

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



Цитата(muravei @ Apr 3 2006, 08:14) *
Ну если так рассуждать, то и портирование с 51 одного производителя на 51 др. тоже неразрешимая задача.

Вы всегда читаете только половину ответа?

Цитата
1. Помоему это достоинство , хуже было бы наоборот.Можно решать двумя способами : в лоб -назначить один регистр акум. и плясать вокруг него , или с умом использовать все 32.
3.Что-то я не понял, а SBRC,SBRS,SBIC ...и т.д.
Думаю все решаемо .Вопрос в том :Ано надо?

1. Это недостаток 51-го.
3. Совсем не то. Речь о JB/JNB, MOV C, P1.0 и т.п.

Я вообще-то говорил об особенностях архитектуры C51, которые создают сложности (лучше сказать - проблемы) для написания автоматического транслятора C51->AVR. А о чем говорите Вы?
Go to the top of the page
 
+Quote Post
muravei
сообщение Apr 4 2006, 07:07
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Я что-то нашел
http://john.ccac.rwth-aachen.de:8000/as/
Go to the top of the page
 
+Quote Post
vet
сообщение Apr 4 2006, 07:26
Сообщение #14


Знающий
****

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



Цитата(muravei @ Apr 4 2006, 11:07) *

Кросс-ассемблер, поддерживает много архитектур;
но, насколько я могу судить, в этой ветке обсуждаются немного другие вещи.


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post
muravei
сообщение Apr 5 2006, 06:12
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 538
Регистрация: 13-08-05
Пользователь №: 7 591



Цитата(vet @ Apr 4 2006, 10:26) *
Кросс-ассемблер, поддерживает много архитектур;
но, насколько я могу судить, в этой ветке обсуждаются немного другие вещи.

Тогда, кто такой Кросс-ассемблер?

Сообщение отредактировал muravei - Apr 5 2006, 06:13
Go to the top of the page
 
+Quote Post
vet
сообщение Apr 5 2006, 06:54
Сообщение #16


Знающий
****

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



Цитата(muravei @ Apr 5 2006, 10:12) *
Тогда, кто такой Кросс-ассемблер?

Кросс-ассемблер - всего лишь программа-ассемблер, запускаемая на другой архитектуре (скажем, PC), отличной от той, под которую транслируется код. В сущности, любой ассемблер, которым мы пользуемся в разработке софта для м/к, есть кросс-ассемблер (если, конечно, это не м/к, совместимый с i386).


--------------------
Главная линия этого опуса ясна мне насквозь!
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 22:12
Рейтинг@Mail.ru


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