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

 
 
> Линковщик
cannoneer
сообщение Mar 20 2012, 16:04
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 31
Регистрация: 10-06-11
Пользователь №: 65 609



Доброго времени суток. Пишу программу для AVR микроконтроллеров на ассемблере. Нужно скомпоновать объектные файлы. Как это можно сделать? На сколько я понимаю, для этого нужен линковщик. Но какой??
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zombi
сообщение Mar 21 2012, 20:41
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Не понимаю зачем для авр вообще нужен линковщик.
Програмной памяти то не много. Неужели время трансляции напрягает?
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Mar 21 2012, 21:05
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(zombi @ Mar 21 2012, 22:41) *
Програмной памяти то не много. Неужели время трансляции напрягает?

Не, немного: 128kB-192kB-256kB..скоро обещают 384kB.

Цитата(zombi @ Mar 21 2012, 22:41) *
Неужели время трансляции напрягает?


Напрягает. 128кБ пересобирается за 1-2 минуты.
Go to the top of the page
 
+Quote Post
zombi
сообщение Mar 22 2012, 15:11
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(_Артём_ @ Mar 22 2012, 00:05) *
Напрягает. 128кБ пересобирается за 1-2 минуты.

Мой самый большой проектик занимает 370кБ в тексте и всего 8кБ в бине.
Точно время трансляции определить не смог.
Результат трансляции появляется практически одновременно с нажатием клавиши ентер.
Причём создается впечатление что львиную долю этого времени занимает вывод на экран результата.
Ну даже если предположить что время трансляции 8кБ = 0.1 сек то 128кБ должно длиться около 1.6 сек.
А 1-2 минуты ... я в шоке. wacko.gif
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Mar 22 2012, 15:27
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(zombi @ Mar 22 2012, 17:11) *
Мой самый большой проектик занимает 370кБ в тексте и всего 8кБ в бине.

Эко у вас сжимает.
Посмотрел проект: исходники ~900kB, bin - 126kB

Цитата(zombi @ Mar 22 2012, 17:11) *
Результат трансляции появляется практически одновременно с нажатием клавиши ентер.
Причём создается впечатление что львиную долю этого времени занимает вывод на экран результата.

На суперкомпьютере работаете?

Цитата(zombi @ Mar 22 2012, 17:11) *
А 1-2 минуты ... я в шоке. wacko.gif

Видимо IAR не может задействовать все ядра проца и HT.
Ну и асм быстрее транслировать.
Go to the top of the page
 
+Quote Post
zombi
сообщение Mar 22 2012, 15:57
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(_Артём_ @ Mar 22 2012, 18:27) *
Эко у вас сжимает.

Дык, целая текстовая сторка превращается в несколько байт.
Цитата(_Артём_ @ Mar 22 2012, 18:27) *
Посмотрел проект: исходники ~900kB, bin - 126kB

Дык, строка это уже целая подпрограмма.
Цитата(_Артём_ @ Mar 22 2012, 18:27) *
На суперкомпьютере работаете?

Вроде нет:

Цитата(_Артём_ @ Mar 22 2012, 18:27) *
Ну и асм быстрее транслировать.

100-500
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Mar 22 2012, 16:36
Сообщение #7


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



zombi
Ну это Вы поскромничали - семь процессоров на борту. Я свои 7-мь ни разу не смог их загнать в ступор.

Но я так и не понял , зачем asm нужен линковщик , если уже команды условных переходов и коанды rcall, rjmp вносят ограничения на расположения остального кода зависящего от "возможностей" этих команд.
Да , include не очень оптимизирует код , но вот порядок подключения файлов позволяет подключить файлы использующие прерывания поближе к таблице прерываний , что даёт возможность заменить jmp на rjmp

Сообщение отредактировал IgorKossak - Mar 23 2012, 10:03
Причина редактирования: бездумное цитирование


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
zombi
сообщение Mar 22 2012, 17:15
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(ILYAUL @ Mar 22 2012, 20:36) *
Ну это Вы поскромничали - семь процессоров на борту. Я свои 7-мь ни разу не смог их загнать в ступор.

А шо, у меня их семь? wacko.gif а я и не знал biggrin.gif
А про ступор и их загнать ниче не понял.
Цитата(ILYAUL @ Mar 22 2012, 20:36) *
Но я так и не понял , зачем asm нужен линковщик , если уже команды условных переходов и коанды rcall, rjmp вносят ограничения на расположения остального кода зависящего от "возможностей" этих команд.
Да , include не очень оптимизирует код , но вот порядок подключения файлов позволяет подключить файлы использующие прерывания поближе к таблице прерываний , что даёт возможность заменить jmp на rjmp

rcall/call, rjmp/jmp - сомнительная экономия обьёма кода для си трансляторов. biggrin.gif
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Mar 22 2012, 17:32
Сообщение #9


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

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(zombi @ Mar 22 2012, 21:15) *
А шо, у меня их семь? wacko.gif а я и не знал biggrin.gif
А про ступор и их загнать ниче не понял.

У Вас написано Intel Core I7 - что и означает семь процессоров на борту.
Загнать в ступор - нагрузить работой процессора так , что бы явно система начинала тормозить. Нагрузка процессора 100%. Максимум чего добился я - 80% - нагрузка сразу в несколько тестов 3-D графики.
Цитата(zombi @ Mar 22 2012, 21:15) *
rcall/call, rjmp/jmp - сомнительная экономия обьёма кода для си трансляторов. biggrin.gif

Так они и не экономят, поэтому и растут объёмы FLASH, ведь если СИ-ный asm хорошенько почистить , глядишь и 4к хватит на весь проект и Tiny 2313 biggrin.gif
Цитата
А код не сэконошь: два байта после вектора остаётся , но куда их деть?

Я думаю , что компилятор СИ так не поступит
Код
cbr        temp,0x0F;| Маскируем младшие биты данных в temp
        sbr        temp,1<<LCD_E;| $08;Устанавливем сигнал строба (Е) в one
        outr    LCD_PORT,temp;/ Выводим первый полубайт в порт
;+ И готовим второй , чтобы не ставить "тупые" NOP для задержки
        swap    temp1
        cbr        temp1,0x0F
        cbr        temp,0xF0
        cbi        LCD_Port,LCD_E;" Записываем данные в LCD


Но умные люди говорят , что можно ещё более сэкономить , я правда не заморачивался этим вопросом.
В одном из asm кодов от Си видел такие сочетания
Код
brne met1
met1: rjmp met2
met2 : ...........


Но вернёмся к теме , так нужен ли линковщик для asm?


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Mar 22 2012, 17:40
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(ILYAUL @ Mar 22 2012, 19:32) *
У Вас написано Intel Core I7 - что и означает семь процессоров на борту.

Вы к 1 апреля готовитесь?
P.S. Не процессоров, а ядер. Не 7, а 2-4-6.

Цитата(ILYAUL @ Mar 22 2012, 19:32) *
Так они и не экономят, поэтому и растут объёмы FLASH

Вы утверждаете что обработчики где-то далеко-далеко располагают?

Цитата(ILYAUL @ Mar 22 2012, 19:32) *
ведь если СИ-ный asm хорошенько почистить , глядишь и 4к хватит на весь проект и Tiny 2313 biggrin.gif

Безусловно, лет за 5-10 можно всё на асм переписать и оптимизировать (процентов на 10-50), Но кому оно тогда будет нужно?

Go to the top of the page
 
+Quote Post
zombi
сообщение Mar 24 2012, 18:20
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(_Артём_ @ Mar 22 2012, 20:40) *
Безусловно, лет за 5-10 можно всё на асм переписать и оптимизировать (процентов на 10-50), Но кому оно тогда будет нужно?

Согласен. Время=деньги.

Цитата(ILYAUL @ Mar 22 2012, 20:32) *
Но вернёмся к теме , так нужен ли линковщик для asm?

Мне нет.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- cannoneer   Линковщик   Mar 20 2012, 16:04
- - zombi   Цитата(cannoneer @ Mar 20 2012, 19:04) Ну...   Mar 20 2012, 16:36
- - Leopoldius   На каком ассемблере. Телепатия не помогает увы... ...   Mar 20 2012, 22:10
- - cannoneer   Использую ассемблер для AVR. Компилятор от AVR Stu...   Mar 21 2012, 07:49
|- - Сергей Борщ   Атмеловский ассемблер от AVRStudio такого не подде...   Mar 21 2012, 09:31
|- - ILYAUL   Цитата(Сергей Борщ @ Mar 21 2012, 13:31) ...   Mar 21 2012, 17:27
|- - Сергей Борщ   QUOTE (ILYAUL @ Mar 21 2012, 19:27) Компа...   Mar 21 2012, 20:05
|- - ILYAUL   Цитата(Сергей Борщ @ Mar 22 2012, 00:05) ...   Mar 21 2012, 20:26
- - cannoneer   Спасибо за ответ. Жаль что не поддерживает. А како...   Mar 21 2012, 09:59
|- - Сергей Борщ   QUOTE (cannoneer @ Mar 21 2012, 11:59) А ...   Mar 21 2012, 10:42
- - hd44780   В WinAvr-е есть и компилятор С, и ассемблер, и лин...   Mar 21 2012, 10:16
- - ILYAUL   Цитата(_Артём_ @ Mar 22 2012, 01:05) Напр...   Mar 22 2012, 08:37
|- - _Артём_   Цитата(ILYAUL @ Mar 22 2012, 10:37) Это ч...   Mar 22 2012, 11:37
- - _Артём_   Цитата(zombi @ Mar 22 2012, 19:15) rcall/...   Mar 22 2012, 17:24
|- - zombi   Цитата(_Артём_ @ Mar 22 2012, 21:22) Там ...   Mar 22 2012, 17:29
- - zombi   Цитата(_Артём_ @ Mar 22 2012, 21:40) Не п...   Mar 22 2012, 17:47
|- - _Артём_   Цитата(zombi @ Mar 22 2012, 19:47) ЗЫ.А ч...   Mar 22 2012, 18:06
- - ILYAUL   Цитата(_Артём_ @ Mar 22 2012, 21:40) Безу...   Mar 25 2012, 17:35
- - zombi   Цитата(ILYAUL @ Mar 25 2012, 20:35) Zombi...   Mar 25 2012, 18:07
- - ILYAUL   Цитата(zombi @ Mar 25 2012, 22:07) Вариан...   Mar 25 2012, 18:19


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

 


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


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