Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

За и против асемблера ?
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=6828
Страница 1 от 3

Автор:  BONGO [ Вто Май 19, 2009 11:07 am ]
Заглавие:  За и против асемблера ?

Питам се дали е удачно да се учи задълбочено асемблер за микроконтролери, или може да се ползва само език от високо ниво - С например.
Аз ползвам С, но си мился че не е лошо да понауча малко и асемблера.
Споделете вашите мнения по темата. :?:



П.П
Говоря като микроконтролери като цяло, без да конкретизирам ....

Автор:  FiTTiLA [ Вто Май 19, 2009 11:31 am ]
Заглавие:  Re: За и против асемблера ?

Абе тука само извратени хора ли има ...

Автор:  Цецо [ Вто Май 19, 2009 11:50 am ]
Заглавие:  Re: За и против асемблера ?

BONGO написа:
Питам се дали е удачно да се учи задълбочено асемблер за микроконтролери, или може да се ползва само език от високо ниво - С например.
Аз ползвам С, но си мился че не е лошо да понауча малко и асемблера.
Споделете вашите мнения по темата. :?:



П.П
Говоря като микроконтролери като цяло, без да конкретизирам ....


Отговор:

За да правиш прости мигалки, може и само C и само Assembler.

За да работиш сериозно, с който и да е контролер - пишеш на C и АКО се наложи тук-таме на Асемблер. Т.е. ако ще работиш сериозно - трябва да владееш C (което е що годе универсално), както и асемблера на конкретния контролер. Даже и да не ти се наложи да пишеш на асемблер, ще ти се наложи да дизасемблираш кода на компилатора. Така че задължително е познаването на двете.

Така че насочил си се абсолютно правилно.

Сега най-добре Рек да заключи темата, че ще стане мазало.

Автор:  BONGO [ Вто Май 19, 2009 11:53 am ]
Заглавие: 

Това е! Заключвайте темата! Благоаря за отговора!

Автор:  tgi [ Вто Май 19, 2009 11:28 pm ]
Заглавие: 

Какъв асемблер? Има ги безброй. Повечето са неудобни.
C-то е мазня, с която можеш да размажеш нещо както всички останали
в днешно време и вероятно да бъдеш конкурентноспособен.
Което не го прави свестен език за програмиране, вредата, който тоя език
нанася на развитието вероятно е съпоставима с тая, нанесена от римските цифри
на математиката (за колко римски математика се сещаш).
Но както римляните биха те гледали като ненормален ако им предложиш
арабски цифри вместо техните си, така и повечето програмисти в днешно време
посрещат идеята, че C е главната спирачка пред това да бъдат пъти по-ефикасни.

Но едва ли имаш пред себе си опции, по-добри от C, за съжаление.
Възможността да минеш без него струва много учене, усилия и т.н., не е за начинаещи.
Не е и за повечето напреднали, всъщност... поне засега. Инак казано, който може
да мине без C не се чуди дали да го прави, а просто минава без него.
А ако просто става дума за преопаковане на едно изделие в друго и препродаване,
(най-популярното занимание в днешно време май), C-то е непобедимо (огромно
количество работеши някак закърпени размазаности).

Автор:  sv_shady [ Сря Май 20, 2009 9:27 am ]
Заглавие: 

Ами и аз програмирах за микроконтролери главно на С, но реших, че да понауча асемблер ще ми е от полза и наистина е! Сега когато нещо не тръгва, преглеждам кода от компилатора на асемблер и веднага виждам къде е грешката и коригирам :) А иначе, че С не е перфектен език не е, но такъв и не съществува - зависи какво ти трябва.

Автор:  Cekins [ Сря Май 20, 2009 5:10 pm ]
Заглавие: 

tgi написа:
Какъв асемблер? Има ги безброй. Повечето са неудобни.


Преди около 23-4 години познавах един шемет дето на Правец 8 пишеше програмите по следния начин :

$F0AC : $BA $C3 ................ и т.н.

Автор:  tgi [ Сря Май 20, 2009 7:40 pm ]
Заглавие: 

Преди толкова години аз можех с лекота да асемблирам на ръка код за 6800...
Преди да имам каквито и да е средства освен един D5+ (+ от мене) кит, това
правех (е, не много дълго време). На хартия пишех сорса (до няколко страници,
с коментари, както пише човек) и след това асемблирах в оставеното отляво
поле.... Е, май най-сложното, което написах, беше една игра на бикове и крави :-) :-).

В днешно време асемблирам с VPA-то си, което е близко до това, което запълва
празнотата между обикновен асемблер и език от високо ниво. Строго погледнато
е по-скоро от "високо" ниво, защото един ред може да изгенерира от 0 до 20-ина
опкода (не става дума за макроинструкция). Може сума ти работи,
като извличане на част от аргументи, рекурсивни макроинструкции, макро *дефиниции*
насред макро, ползва целия скрипт език на DPS-shell-а, който включва мултидименсионални
променливи (т.е. името на променлива може да е съставено от променливи), и кой знае
какво още, дето не се сещам. Е, мултиплатформеността досега е ограничена до
68k/CPU32 и PPC, но всичко останало е въпрос на реализация, не на нещо
ново.
Въобще главното в един език е сематичното богатство, след това идва лекотата, с която това
богатство се ползва, и чак след това идва леснотата за учене - освен ако не става дума
за еднократно усилие, когато голямо учене не е оправдано.
Още малко да поясня как виждам езиците, тия от високо ниво са като разговорник,
с който можеш да се оправиш набързо. Разговорникът от най-ниско ниво, който съм
виждал, е C - затова е и най-използваем. Но движението отгоре надолу - прибавяйки
фрази към разговорника - е принципно погрешно, езиците еволюират в обратна посока,
създавайки конструкции на базата главно на вече наличното в тях. Това, разбира се,
предполага овладяването на езика преди ползването му и съответно е (много?) по-трудоемко,
а и не всеки има способността да съчинява текст, всъщност на много хора им е
по-лесно да ползват готови фрази....

Автор:  [ Чет Май 21, 2009 12:13 pm ]
Заглавие: 

BONGO, ако се справяш на C, не ти трябва да учиш асемблер, освен може би дотолкова, доколкото да проверяваш понякога в листинга какво ти е изгенерирал компилатора, така ще научиш кои конструкции на C генерират минимален код. Асемблера е като да се опитваш да запалиш кола с манивела и бутане, при положение, че имаш работещо табло и само трябва да се научиш в коя посока да завърташ ключа за запалването. Ако си мазохист буташ, ако не си, сядаш като бял човек, палиш и потегляш :D Асемблера може да го сравниш още с китайските ейроглифи, а C с английския, ако ще ходиш да живееш в Китай е хубаво да научиш ейроглифите, ако мислиш да обикаляш по света, китайския няма да ти помогне особено.

Автор:  Цецо [ Чет Май 21, 2009 12:33 pm ]
Заглавие: 

¶ написа:
BONGO, ако се справяш на C, не ти трябва да учиш асемблер, освен може би дотолкова, доколкото да проверяваш понякога в листинга какво ти е изгенерирал компилатора, така ще научиш кои конструкции на C генерират минимален код. Асемблера е като да се опитваш да запалиш кола с манивела и бутане, при положение, че имаш работещо табло и само трябва да се научиш в коя посока да завърташ ключа за запалването. Ако си мазохист буташ, ако не си, сядаш като бял човек, палиш и потегляш :D Асемблера може да го сравниш още с китайските ейроглифи, а C с английския, ако ще ходиш да живееш в Китай е хубаво да научиш ейроглифите, ако мислиш да обикаляш по света, китайския няма да ти помогне особено.


Ако съм работодател и някой ми заяви че има опит с определен контролер, без да познава асемблера му, щото видиш ли не му трябвал - ще го пратя да си търси работа като Java драскач.

Не можеш да пишеш оптимизиран код на C без да познаваш архитектурата върху която ще я пуснеш, т.е. асемблера и. Един ред на C за PIC може да генерира най-оптималния код, но същия ред на C за ARM ще сътвори сериозна боза. И няма как да разбереш кой е "оптималния код" на С ако не знаеш какъв е програмния модел на използвания процесор, вкл. асемблера му. Например дали има инструкции за делене, дали е по добре да ръгаш променливите в стека или като глобални или пък като регистри, дали има битово ориентирани инструкции или не, дали може да тегли неподравнени данни от паметта и пр. Всичко това човек може да разбере само ако познава на прилично ниво асемблера на конкретния контролер.

Естествено ако говорим за писане върху операционна система на високо ниво върху процесор - тогава има почва за изява и за непознаващи платформата/асемблера. Но ако говорим за микроконтролери....

Все едно да пишеш CPLD, знаейки само VHDL, ама без да знаеш закона на Ом. Не че не може.... ама не е сериозно.

Автор:  [ Чет Май 21, 2009 3:45 pm ]
Заглавие: 

Да си, ама не си работодател :D Обикновено работодателите не са инженери, за тях е по-важно човека да си върши работата бързо и качествено, а не да знае има ли деление, няма ли в професора, познаването на стек, опашка, динамични променливи няма нищо общо с асемблера. Тези разбирания са морално остарели и са имали смисъл преди 20г., сега когато микроконтролерите праскат на по 200MHz не е от съществено значение асемблера. Ако се пишеше на асемблер, сега лаптоп с ОС щеше да има само tgi :)

Автор:  sthx [ Чет Май 21, 2009 3:58 pm ]
Заглавие: 

Tъкмо бях започнал да се притеснявам, че от тая искра огън няма да има :D

Автор:  Цецо [ Чет Май 21, 2009 4:14 pm ]
Заглавие: 

¶ написа:
Да си, ама не си работодател


:)

Автор:  tgi [ Чет Май 21, 2009 6:59 pm ]
Заглавие: 

¶ написа:
Да си, ама не си работодател :D Обикновено работодателите не са инженери, за тях е по-важно човека да си върши работата бързо и качествено, а не да знае има ли деление, няма ли в професора, познаването на стек, опашка, динамични променливи няма нищо общо с асемблера. Тези разбирания са морално остарели и са имали смисъл преди 20г., сега когато микроконтролерите праскат на по 200MHz не е от съществено значение асемблера. Ако се пишеше на асемблер, сега лаптоп с ОС щеше да има само tgi :)


От това, че не е работодател твърдението не става по-малко вярно.
Наистина с 200+ MHz системи в днешно време куцо и сакато прави това, което е правено
преди с 2-3 MHz (е, днешните работят по-непредсказуемо и за самите им програмисти, ама
пък нали са евтини та и не е толкова нужно да работят...).

Всъщност лаптоп - или настолна система - с пълнофункционална ОС 100+ пъти по-компактна и
не ми се смята с колко по-ниска латентност от тия на MS и Apple така и няма откъде да купиш
освен от мене. Едва ли защото съм толкова по-способен от останалите; средствата, които
ползвам, са ключът.

Автор:  smtp [ Чет Май 21, 2009 8:40 pm ]
Заглавие: 

tgi написа:
¶ написа:
...Всъщност лаптоп - или настолна система - с пълнофункционална ОС 100+ пъти по-компактна и
не ми се смята с колко по-ниска латентност от тия на MS и Apple така и няма откъде да купиш
освен от мене. Едва ли защото съм толкова по-способен от останалите; средствата, които
ползвам, са ключът.


боже кВи "гении" имало по тоя свят :)

Страница 1 от 3 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/