LINUX.ORG.RU
ФорумTalks

ASM vs C

 


1

3

Я как то был лучшего мнения о компиляторе GCС и его варианте gcc-avr.

Вняв, какой клевый язык C, и переписав программу на нем, я увидел ужасный, отвратительный ассемблерный код (даже с -O2), с диким количеством записи в память, и к тому же в несколько раз длиннее.

★★★★★

Последнее исправление: cvs-255 (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

Чтобы знать, что за что отвечает.

А ты по произвольному «хорошему» сишному коду поймешь, что он делает, и почему автор выбрал именно такой путь?

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

По хорошему - пойму :) Отчего ж не понять-то? Если он именно что хороший, а не «хороший!!!111адинадин» как у некоторых фанатов обфускации сорцов и прочих однострочников, толку от которых в достаточно большой программе - чуть, а понимание плавает даже у аффтара через неделю :)

slackwarrior ★★★★★
()
Ответ на: комментарий от slackwarrior

Что он делает, скорее всего поймешь, а вот почему именно так, а не иначе разберешься? Без документации, и вообще без указаний о том, с какими трудностями столкнулся автор при написании, и как он их обходил?

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от slackwarrior

Ну вот например, искра вызывает радионаводки и ложное срабатывание датчика.

Как ты без комментариев поймешь, что вот такой-то участок кода занимается именно решением этой проблемы?

cvs-255 ★★★★★
() автор топика
Последнее исправление: cvs-255 (всего исправлений: 1)
Ответ на: комментарий от cvs-255

Fair well

Ох щи... :)

Я говорил, что комментарии совсем не нужны? :) Но ты помнится говорил, что их нужна многа, окай? И тут же приводишь какое-то исключительное обстоятельство :) Может еще нули с единицами случано путаются в грозу - бида-бида, мишон критикал под угрозой, двойное резервирование не прокатит - в море может быть или один хронометр... или три! Резерва надежности много не бывает же:) А еще мы на случай падения метеорита специальную хуку напишем. Из ее названия, конечно, никто не поймет, что это не шутка - добавим комментариев. В духе //DO NOT REMOVE THAT PLUG BITCHES! It DOES THE MAGIC against moon phase at event of 13th Friday or smth.

slackwarrior ★★★★★
()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

Но ты помнится говорил, что их нужна многа, окай?

нет, не окай. Я говорил, что мой ассемблерный код с комментриями понятнее высера avr-gcc

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

Щито? Оптимизирующий компилятор достаточно общего назначения должен тебе досконально прокомментировать свои... промахи оптимизации? :) Искусственный интеллект с libastral.a, поможет, инфа 146 % (одновременнно обеспечит прирост перфоманса и снижение зажора памяти) Автогенерируемый код на то и автогенерируемый, что руками ты в него предположительно не полезешь (для умников там обычно один комментарий: «please, do not edit: that code is autogenerated») - а если такой умный (машина-то по определению тупая, но еще и с неизгладимым отпечатком ФГМ разработчиков компилятора, которые ах, не предусмотрели твой специальный случай) - то и флаг (оптимизации) тебе в руки. No problem.

slackwarrior ★★★★★
()
Ответ на: комментарий от slackwarrior

то и флаг (оптимизации) тебе в руки. No problem.

только почему-то куда проще самому переписать

cvs-255 ★★★★★
() автор топика
Ответ на: комментарий от cvs-255

У тебя программа в 3 строки вот и весь секрет. Если тебе понадобится хотя-бы в жпег кодировать картинку с камеры, то всю твою программу можно будет либо выкинуть, либо самому писать энкодер в жпег с учетом того, что часть регистров занята.
П.С.
Я тебе же выше написал, как одной строкой переменную привязать к регистру, если это сделать, то из памяти читать не надо будет. Но на мало-мальски больших программах регистры в качестве глобальных переменных это грабли-ниндзя.

Tark ★★
()
Ответ на: комментарий от luke

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

aiqu6Ait ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.