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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Линковщик
zombi
сообщение Mar 22 2012, 15:11
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #18


Гуру
******

Группа: Свой
Сообщений: 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
Сообщение #19


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

Группа: Свой
Сообщений: 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
Сообщение #20


Гуру
******

Группа: Свой
Сообщений: 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
_Артём_
сообщение Mar 22 2012, 17:24
Сообщение #21


Гуру
******

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



Цитата(zombi @ Mar 22 2012, 19:15) *
rcall/call, rjmp/jmp - сомнительная экономия обьёма кода для си трансляторов. biggrin.gif

Там экономия скорее времени исполнения: не 3 цикла, а - 2 (rjmp).
А код не сэконошь: два байта после вектора остаётся , но куда их деть?

Цитата(ILYAUL @ Mar 22 2012, 18:36) *
Да , include не очень оптимизирует код , но вот порядок подключения файлов позволяет подключить файлы использующие прерывания поближе к таблице прерываний , что даёт возможность заменить jmp на rjmp

А что таки Си не позволяет разместить обработчик поближе к таблице векторов?

Цитата(zombi @ Mar 22 2012, 17:57) *
Дык, целая текстовая сторка превращается в несколько байт.
Дык, строка это уже целая подпрограмма.

Вы ж на асме пишете. Тогда - да.

zombi
Как сказать: у меня Atom 1.6GHz/1(или 2)GB RAM/2 ядра c HT

Сообщение отредактировал IgorKossak - Mar 23 2012, 10:04
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post
zombi
сообщение Mar 22 2012, 17:29
Сообщение #22


Гуру
******

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



Цитата(_Артём_ @ Mar 22 2012, 21:22) *
Там экономия скорее времени исполнения: не 3 цикла, а - 2 (rjmp).
А код не сэконошь: два байта после вектора остаётся , но куда их деть?

При желании можно искользовать как константы например.
Цитата(_Артём_ @ Mar 22 2012, 21:22) *
А что таки Си не позволяет разместить обработчик поближе к таблице векторов?

Понятия не имею, но сомневаюсь что он в таблицу векторов rjmp поставит.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Mar 22 2012, 17:32
Сообщение #23


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

Группа: Свой
Сообщений: 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
Сообщение #24


Гуру
******

Группа: Свой
Сообщений: 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 22 2012, 17:47
Сообщение #25


Гуру
******

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



Цитата(_Артём_ @ Mar 22 2012, 21:40) *
Не процессоров, а ядер. Не 7, а 2-4-6.

Да бог с ним сколько у него процов/ядер, главное шустрый и меня устраивает.
ЗЫ.А что такое 2-4-6?
Оный вроде как : четырехъядерный процессор поддерживает 8 вычислительных потоков и имеет дополнительную кэш-память 3-го уровня.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Mar 22 2012, 18:06
Сообщение #26


Гуру
******

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



Цитата(zombi @ Mar 22 2012, 19:47) *
ЗЫ.А что такое 2-4-6?

В зависимости от модели либо 2 либо 4 либо 6 ядер.
Go to the top of the page
 
+Quote Post
zombi
сообщение Mar 24 2012, 18:20
Сообщение #27


Гуру
******

Группа: Свой
Сообщений: 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
ILYAUL
сообщение Mar 25 2012, 17:35
Сообщение #28


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

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



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


Ну по этому поводу мы спорить не будем. Хотя asm имеет достаточно инструментов , что бы сократить время написания программ.

Я так понял , что никто не пробывал применять линковщик для asm?

Zombi:

Как на одном регистре сделать счётчик до 0x100 =256?


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

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


Гуру
******

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



Цитата(ILYAUL @ Mar 25 2012, 20:35) *
Zombi:

Как на одном регистре сделать счётчик до 0x100 =256?

Варианты ответов:
A: сколько бит имеет регистр?
B: если нужно 256 состояний регистра и оный 8-ми битный то всё уже сделано.
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение Mar 25 2012, 18:19
Сообщение #30


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

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



Цитата(zombi @ Mar 25 2012, 22:07) *
Варианты ответов:
A: сколько бит имеет регистр?
B: если нужно 256 состояний регистра и оный 8-ми битный то всё уже сделано.


8- бит =255 = 0xFF на 256-ом выставляется флаг zero, соответсвенно переход- и не учитывается.

Если вычислять среднее , то делая 256 отсчётов , в старшем регистре зарезервированного под вычисление среднего, сразу будет находится необходимое значение. И дополнительных действий по делению не требуется.

Всё , спасибо , решил


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

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post

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

 


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


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