|
Линковщик |
|
|
|
Mar 22 2012, 15:11
|

Гуру
     
Группа: Свой
Сообщений: 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 минуты ... я в шоке.
|
|
|
|
|
Mar 22 2012, 15:27
|
Гуру
     
Группа: Свой
Сообщений: 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 минуты ... я в шоке.  Видимо IAR не может задействовать все ядра проца и HT. Ну и асм быстрее транслировать.
|
|
|
|
|
Mar 22 2012, 15:57
|

Гуру
     
Группа: Свой
Сообщений: 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
|
|
|
|
|
Mar 22 2012, 16:36
|

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

|
zombiНу это Вы поскромничали - семь процессоров на борту. Я свои 7-мь ни разу не смог их загнать в ступор. Но я так и не понял , зачем asm нужен линковщик , если уже команды условных переходов и коанды rcall, rjmp вносят ограничения на расположения остального кода зависящего от "возможностей" этих команд. Да , include не очень оптимизирует код , но вот порядок подключения файлов позволяет подключить файлы использующие прерывания поближе к таблице прерываний , что даёт возможность заменить jmp на rjmp
Сообщение отредактировал IgorKossak - Mar 23 2012, 10:03
Причина редактирования: бездумное цитирование
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Mar 22 2012, 17:15
|

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

|
Цитата(ILYAUL @ Mar 22 2012, 20:36)  Ну это Вы поскромничали - семь процессоров на борту. Я свои 7-мь ни разу не смог их загнать в ступор. А шо, у меня их семь?  а я и не знал А про ступор и их загнать ниче не понял. Цитата(ILYAUL @ Mar 22 2012, 20:36)  Но я так и не понял , зачем asm нужен линковщик , если уже команды условных переходов и коанды rcall, rjmp вносят ограничения на расположения остального кода зависящего от "возможностей" этих команд. Да , include не очень оптимизирует код , но вот порядок подключения файлов позволяет подключить файлы использующие прерывания поближе к таблице прерываний , что даёт возможность заменить jmp на rjmp rcall/call, rjmp/jmp - сомнительная экономия обьёма кода для си трансляторов.
|
|
|
|
|
Mar 22 2012, 17:24
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(zombi @ Mar 22 2012, 19:15)  rcall/call, rjmp/jmp - сомнительная экономия обьёма кода для си трансляторов.  Там экономия скорее времени исполнения: не 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
Причина редактирования: бездумное цитирование
|
|
|
|
|
Mar 22 2012, 17:32
|

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

|
Цитата(zombi @ Mar 22 2012, 21:15)  А шо, у меня их семь?  а я и не знал А про ступор и их загнать ниче не понял. У Вас написано Intel Core I7 - что и означает семь процессоров на борту. Загнать в ступор - нагрузить работой процессора так , что бы явно система начинала тормозить. Нагрузка процессора 100%. Максимум чего добился я - 80% - нагрузка сразу в несколько тестов 3-D графики. Цитата(zombi @ Mar 22 2012, 21:15)  rcall/call, rjmp/jmp - сомнительная экономия обьёма кода для си трансляторов.  Так они и не экономят, поэтому и растут объёмы FLASH, ведь если СИ-ный asm хорошенько почистить , глядишь и 4к хватит на весь проект и Tiny 2313  Цитата А код не сэконошь: два байта после вектора остаётся , но куда их деть? Я думаю , что компилятор СИ так не поступит Код 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?
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Mar 22 2012, 17:40
|
Гуру
     
Группа: Свой
Сообщений: 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  Безусловно, лет за 5-10 можно всё на асм переписать и оптимизировать (процентов на 10-50), Но кому оно тогда будет нужно?
|
|
|
|
|
Mar 25 2012, 17:35
|

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

|
Цитата(_Артём_ @ Mar 22 2012, 21:40)  Безусловно, лет за 5-10 можно всё на асм переписать и оптимизировать (процентов на 10-50), Но кому оно тогда будет нужно? Ну по этому поводу мы спорить не будем. Хотя asm имеет достаточно инструментов , что бы сократить время написания программ. Я так понял , что никто не пробывал применять линковщик для asm? Zombi: Как на одном регистре сделать счётчик до 0x100 =256?
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
|
Mar 25 2012, 18:19
|

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

|
Цитата(zombi @ Mar 25 2012, 22:07)  Варианты ответов: A: сколько бит имеет регистр? B: если нужно 256 состояний регистра и оный 8-ми битный то всё уже сделано. 8- бит =255 = 0xFF на 256-ом выставляется флаг zero, соответсвенно переход- и не учитывается. Если вычислять среднее , то делая 256 отсчётов , в старшем регистре зарезервированного под вычисление среднего, сразу будет находится необходимое значение. И дополнительных действий по делению не требуется. Всё , спасибо , решил
--------------------
Закон Мерфи:
Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|