| Микроконтролери и електроника 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: За и против асемблера ? | |||||||||
Отговор: За да правиш прости мигалки, може и само 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 ] | |||||||||
| Заглавие: | ||||||||||
Преди около 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 генерират минимален код. Асемблера е като да се опитваш да запалиш кола с манивела и бутане, при положение, че имаш работещо табло и само трябва да се научиш в коя посока да завърташ ключа за запалването. Ако си мазохист буташ, ако не си, сядаш като бял човек, палиш и потегляш |
|
| Автор: | Цецо [ Чет Май 21, 2009 12:33 pm ] | |||||||||
| Заглавие: | ||||||||||
Ако съм работодател и някой ми заяви че има опит с определен контролер, без да познава асемблера му, щото видиш ли не му трябвал - ще го пратя да си търси работа като Java драскач. Не можеш да пишеш оптимизиран код на C без да познаваш архитектурата върху която ще я пуснеш, т.е. асемблера и. Един ред на C за PIC може да генерира най-оптималния код, но същия ред на C за ARM ще сътвори сериозна боза. И няма как да разбереш кой е "оптималния код" на С ако не знаеш какъв е програмния модел на използвания процесор, вкл. асемблера му. Например дали има инструкции за делене, дали е по добре да ръгаш променливите в стека или като глобални или пък като регистри, дали има битово ориентирани инструкции или не, дали може да тегли неподравнени данни от паметта и пр. Всичко това човек може да разбере само ако познава на прилично ниво асемблера на конкретния контролер. Естествено ако говорим за писане върху операционна система на високо ниво върху процесор - тогава има почва за изява и за непознаващи платформата/асемблера. Но ако говорим за микроконтролери.... Все едно да пишеш CPLD, знаейки само VHDL, ама без да знаеш закона на Ом. Не че не може.... ама не е сериозно. |
||||||||||
| Автор: | ¶ [ Чет Май 21, 2009 3:45 pm ] |
| Заглавие: | |
Да си, ама не си работодател |
|
| Автор: | sthx [ Чет Май 21, 2009 3:58 pm ] |
| Заглавие: | |
Tъкмо бях започнал да се притеснявам, че от тая искра огън няма да има |
|
| Автор: | Цецо [ Чет Май 21, 2009 4:14 pm ] | |||||||||
| Заглавие: | ||||||||||
|
||||||||||
| Автор: | tgi [ Чет Май 21, 2009 6:59 pm ] | |||||||||
| Заглавие: | ||||||||||
От това, че не е работодател твърдението не става по-малко вярно. Наистина с 200+ MHz системи в днешно време куцо и сакато прави това, което е правено преди с 2-3 MHz (е, днешните работят по-непредсказуемо и за самите им програмисти, ама пък нали са евтини та и не е толкова нужно да работят...). Всъщност лаптоп - или настолна система - с пълнофункционална ОС 100+ пъти по-компактна и не ми се смята с колко по-ниска латентност от тия на MS и Apple така и няма откъде да купиш освен от мене. Едва ли защото съм толкова по-способен от останалите; средствата, които ползвам, са ключът. |
||||||||||
| Автор: | smtp [ Чет Май 21, 2009 8:40 pm ] | ||||||||||||||||||
| Заглавие: | |||||||||||||||||||
боже кВи "гении" имало по тоя свят |
|||||||||||||||||||
| Страница 1 от 3 | Часовете са според зоната UTC + 2 часа [ DST ] |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|