Чойта так? Скорее наоборот - лопата у вас. И без наворотов. Ишь че удумали - в ограниченные ресурсы, да экскаватором ))
спокойнее, господа! Экономьте мне херес, я всего одну бутылку взял…
(… подумал и начал чередовать с водкой)
Я вот наблюдаю за спором и понять не могу о чём спор?
Об удобстве кодинга? ЯВУ в любом случае лучше Асма.
Или спорим какой бинарник круче: сишный или ассемблерный?(так вроде они одинаково из 1 и 0 состоят)
Короче, Склифософский! Вот на Асме можно только простейшие процессорные операции выполнять. А на Си можно более сложные высокоуровневые конструкции городить. Но точно так же можно и элементарные действия реализовать: битовые операции, манипуляции с регистрами и прочее.
А вот про периферию заикнулся вообще не к месту. Чем не угождает запись
register uint16_t temp asm("r3");
temp=ADC;
Но это крайне редкий случай. Компилятор сам додумается куда лучше поместить.
Под языком Си точно имеется ввиду Си? А то вдруг ардуиновская надстройка Wiring.
О том, что нет языка иного, чем асм, а дедиван пророк его.
Как бывший ЗРК, могу сказать, что «всё тлен».))))))
Но я не услышал ответа на мой вопрос по асму на современных ПК?
За ради справедливости. Асм нужен. Для 4-битных процессоров советских(не помню наименования, в детстве книжку читал). И нужен он 60 лет назад)
А ещё это удел гиков со Спектрумом в руках. Да,да! Для них умельцы до сих пор игрухи делают.
для PIC писалось на асме однако
Да, читал на Хабре или гике как парень набирал коды на калькуляторе из распечатки журнала радио. Те времена прошли давно. Или алкатель с аналоговой связью хартите на «повседневку»?))
Может и сейчас пишется. Я пишу микро-программы (под свои PIC и свои задачи) и нафиг там асм не упал.
Но знать как на нем что происходит, без условно, подезно.
Во-первых: он не понимает - он слишком интеллигентный/старый/буддистский
Во-вторых: к вашему вопросу о
Некоторые и для Армов на асм-е пишут. Это ли показатель. Мало ли кто какой хернёй мается.
Похожая ситуация с автомобилями. В советские времена(ууух!!!) инструкция по эксплуатации включала все сведения для ремонта и обслуживания. Там и замена всего и вся показана, зазоры клапанов и, даже(!!!), зазоры в цилиндро-поршневой. Но это само собой исчезло. Незачем своими кривыми руками лазить туда, где место заняли специалисты.
Ассемблер существовал в эпоху, когда попросту не было процессора мощней и памяти больше чтоб запустить компилятор. Первый компилятор и появился, когда появился достаточный для этого компьютер.
Ассемблер как трёхколёсный велик для ребёнка. Необходим на определённом этапе развития, не более. А наш многоуважаемый гость в этой студии никак с него не хочет слазить. Ведь на нём так просто, привычно)
А я объясню. Меня достала клоунада и я попросил человека или ответить за базар делом (более эффективной программой), или заткнуться.
Делом он ответить не сможет, т.к. повторить мою библиотеку для таймеров не ассемблере весьма непросто, если вообще возможно. Надеюсь, что заткнётся.
Какой вопрос?
Помнится, как-то в очередной версии Delphi ввели новую команду - изменение размера массива.
Так вот, вскоре после этого на каком-то форум попался мне на глаза исходник, реализующий простую вещь: увеличить размер массива на 1000 ячеек и дописать в конец этого массива 1000 величин.
Реализовано это было так:
- начало цикла до 1000
– увеличить массив на один элемент
– записать значение нового элемента в конец массива - конец цикла
Так вот, IMHO ассемблер полезно знать (чтобы представлять, во что превратится код на ЯВУ), но в большинстве случаев вредно применять.
Евгений Петрович, это не к Вам вопрос был. Я писал о ассемблере к современным процессорам. Скорее всего философский, так как не понимаю - ассемблер для современных процессоров прост и прекрасен (как Си, Делфи или еще что) если его «особенности» сгладит ОС, или же для каждой версии процессора нужно писать свои функции/инструкции и тп (в решении задачи). Ну и выше писал о сомнениях.
Когда-то давно писал на Delphi одну програмку, там была функция, которая вызывалась в циклах очень большое ко-во раз. Ничего особенного в той процедуре не было, т.е. циклы, арифметические и логические операции. Но все работало ужасно медленно. Попытки оптимизировать ее привели только к незначительному результату.
После того как я переписал эту функцию на ассемблере, все вычисления стали работать на полтора порядка быстрее, т.е. раз в 30 быстрее.
Так что иногда ассемблер довольно полезен. Есть конечно и минус: В ассемблерном коде я применил столько “извращений”, что через месяц глядя на этот код я уже ничего не мог понять как он работает.
А что именно Вы подразумеваете под “современными процессорами”?
Вот лично у меня такой коэффициент - в 30 раз (причем, величина достаточно устойчива) - получался, когда один и тот же код на ЯВУ компилируешь либо под i387, либо под систему без сопроцессора. Т.е. разница - за счет применения FPU.
Неоднократно сталкивался со случаями, когда оптимизация (кстати, исключительно средствами ЯВУ) приводит к уменьшению времени работы в тысячи раз.
Допускаю, что в некоторых отдельных случаях применение Ассемблера может привести к уменьшению времени выполнения вплоть до 3-4 раз.
А вот так - переводом с ЯВУ на Ассемблер без изменения алгоритма - в 30 раз - не верю.
Подозреваю, что алгоритм был существенно изменен (например, применены битовые операции вместо логических). Ну либо использованы какие-то заведомо неоптимальные решения с многочисленными проверками (как, например в Ардуино: digitalRead и digitalWrite - тоже раз в 30).
Так что, если будет приведен здесь на форуме конкретный код, думаю, можно будет наверняка сказать, где именно отличие в алгоритме. Чудес не бывает.