zombi 0 22 марта, 2012 Опубликовано 22 марта, 2012 · Жалоба Напрягает. 128кБ пересобирается за 1-2 минуты. Мой самый большой проектик занимает 370кБ в тексте и всего 8кБ в бине. Точно время трансляции определить не смог. Результат трансляции появляется практически одновременно с нажатием клавиши ентер. Причём создается впечатление что львиную долю этого времени занимает вывод на экран результата. Ну даже если предположить что время трансляции 8кБ = 0.1 сек то 128кБ должно длиться около 1.6 сек. А 1-2 минуты ... я в шоке. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 22 марта, 2012 Опубликовано 22 марта, 2012 · Жалоба Мой самый большой проектик занимает 370кБ в тексте и всего 8кБ в бине. Эко у вас сжимает. Посмотрел проект: исходники ~900kB, bin - 126kB Результат трансляции появляется практически одновременно с нажатием клавиши ентер. Причём создается впечатление что львиную долю этого времени занимает вывод на экран результата. На суперкомпьютере работаете? А 1-2 минуты ... я в шоке. Видимо IAR не может задействовать все ядра проца и HT. Ну и асм быстрее транслировать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 22 марта, 2012 Опубликовано 22 марта, 2012 · Жалоба Эко у вас сжимает. Дык, целая текстовая сторка превращается в несколько байт. Посмотрел проект: исходники ~900kB, bin - 126kB Дык, строка это уже целая подпрограмма. На суперкомпьютере работаете? Вроде нет: Ну и асм быстрее транслировать. 100-500 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 22 марта, 2012 Опубликовано 22 марта, 2012 (изменено) · Жалоба zombi Ну это Вы поскромничали - семь процессоров на борту. Я свои 7-мь ни разу не смог их загнать в ступор. Но я так и не понял , зачем asm нужен линковщик , если уже команды условных переходов и коанды rcall, rjmp вносят ограничения на расположения остального кода зависящего от "возможностей" этих команд. Да , include не очень оптимизирует код , но вот порядок подключения файлов позволяет подключить файлы использующие прерывания поближе к таблице прерываний , что даёт возможность заменить jmp на rjmp Изменено 23 марта, 2012 пользователем IgorKossak бездумное цитирование Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 22 марта, 2012 Опубликовано 22 марта, 2012 · Жалоба Ну это Вы поскромничали - семь процессоров на борту. Я свои 7-мь ни разу не смог их загнать в ступор. А шо, у меня их семь? а я и не знал А про ступор и их загнать ниче не понял. Но я так и не понял , зачем asm нужен линковщик , если уже команды условных переходов и коанды rcall, rjmp вносят ограничения на расположения остального кода зависящего от "возможностей" этих команд. Да , include не очень оптимизирует код , но вот порядок подключения файлов позволяет подключить файлы использующие прерывания поближе к таблице прерываний , что даёт возможность заменить jmp на rjmp rcall/call, rjmp/jmp - сомнительная экономия обьёма кода для си трансляторов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 22 марта, 2012 Опубликовано 22 марта, 2012 (изменено) · Жалоба rcall/call, rjmp/jmp - сомнительная экономия обьёма кода для си трансляторов. Там экономия скорее времени исполнения: не 3 цикла, а - 2 (rjmp). А код не сэконошь: два байта после вектора остаётся , но куда их деть? Да , include не очень оптимизирует код , но вот порядок подключения файлов позволяет подключить файлы использующие прерывания поближе к таблице прерываний , что даёт возможность заменить jmp на rjmp А что таки Си не позволяет разместить обработчик поближе к таблице векторов? Дык, целая текстовая сторка превращается в несколько байт. Дык, строка это уже целая подпрограмма. Вы ж на асме пишете. Тогда - да. zombi Как сказать: у меня Atom 1.6GHz/1(или 2)GB RAM/2 ядра c HT Изменено 23 марта, 2012 пользователем IgorKossak бездумное цитирование Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 22 марта, 2012 Опубликовано 22 марта, 2012 · Жалоба Там экономия скорее времени исполнения: не 3 цикла, а - 2 (rjmp). А код не сэконошь: два байта после вектора остаётся , но куда их деть? При желании можно искользовать как константы например. А что таки Си не позволяет разместить обработчик поближе к таблице векторов? Понятия не имею, но сомневаюсь что он в таблицу векторов rjmp поставит. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 22 марта, 2012 Опубликовано 22 марта, 2012 · Жалоба А шо, у меня их семь? а я и не знал А про ступор и их загнать ниче не понял. У Вас написано Intel Core I7 - что и означает семь процессоров на борту. Загнать в ступор - нагрузить работой процессора так , что бы явно система начинала тормозить. Нагрузка процессора 100%. Максимум чего добился я - 80% - нагрузка сразу в несколько тестов 3-D графики. 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? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 22 марта, 2012 Опубликовано 22 марта, 2012 · Жалоба У Вас написано Intel Core I7 - что и означает семь процессоров на борту. Вы к 1 апреля готовитесь? P.S. Не процессоров, а ядер. Не 7, а 2-4-6. Так они и не экономят, поэтому и растут объёмы FLASH Вы утверждаете что обработчики где-то далеко-далеко располагают? ведь если СИ-ный asm хорошенько почистить , глядишь и 4к хватит на весь проект и Tiny 2313 Безусловно, лет за 5-10 можно всё на асм переписать и оптимизировать (процентов на 10-50), Но кому оно тогда будет нужно? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 22 марта, 2012 Опубликовано 22 марта, 2012 · Жалоба Не процессоров, а ядер. Не 7, а 2-4-6. Да бог с ним сколько у него процов/ядер, главное шустрый и меня устраивает. ЗЫ.А что такое 2-4-6? Оный вроде как : четырехъядерный процессор поддерживает 8 вычислительных потоков и имеет дополнительную кэш-память 3-го уровня. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 22 марта, 2012 Опубликовано 22 марта, 2012 · Жалоба ЗЫ.А что такое 2-4-6? В зависимости от модели либо 2 либо 4 либо 6 ядер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 24 марта, 2012 Опубликовано 24 марта, 2012 · Жалоба Безусловно, лет за 5-10 можно всё на асм переписать и оптимизировать (процентов на 10-50), Но кому оно тогда будет нужно? Согласен. Время=деньги. Но вернёмся к теме , так нужен ли линковщик для asm? Мне нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 25 марта, 2012 Опубликовано 25 марта, 2012 · Жалоба Безусловно, лет за 5-10 можно всё на асм переписать и оптимизировать (процентов на 10-50), Но кому оно тогда будет нужно? Ну по этому поводу мы спорить не будем. Хотя asm имеет достаточно инструментов , что бы сократить время написания программ. Я так понял , что никто не пробывал применять линковщик для asm? Zombi: Как на одном регистре сделать счётчик до 0x100 =256? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zombi 0 25 марта, 2012 Опубликовано 25 марта, 2012 · Жалоба Zombi: Как на одном регистре сделать счётчик до 0x100 =256? Варианты ответов: A: сколько бит имеет регистр? B: если нужно 256 состояний регистра и оный 8-ми битный то всё уже сделано. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ILYAUL 0 25 марта, 2012 Опубликовано 25 марта, 2012 · Жалоба Варианты ответов: A: сколько бит имеет регистр? B: если нужно 256 состояний регистра и оный 8-ми битный то всё уже сделано. 8- бит =255 = 0xFF на 256-ом выставляется флаг zero, соответсвенно переход- и не учитывается. Если вычислять среднее , то делая 256 отсчётов , в старшем регистре зарезервированного под вычисление среднего, сразу будет находится необходимое значение. И дополнительных действий по делению не требуется. Всё , спасибо , решил Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться