Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ассемблер для atmel, переносимость программ
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
hxdev
Я начинающий для однокристалок, но "испорчен" CISC-архитектурой и программированием на ассемблерах(masm32,tasm,fasm,nasm) под windows для 0x86.
Я думаю понятно, что microsoft не ахти как поощеряет это дело,
не было ни инклюдников с константами, ни прототипов api-функций,
и все было против ассемблерщиков под windows, еще лет 5 назад, сказав,
что ты программируешь на асемблере под windows тебя обозвали бы гадким астматиком, и атавизмом программирования. Но сейчас ситуация изменилась -
есть все, что надо - и инклюдники и IDE( их примерно десяток, самое яркое это конечно RADASM (http://radasm.visualassembler.com/) - сишные программисты синеют от злостиsmile.gif) , и примеров море и написана куча макросов, посмотрите как цветут и пахнут
http://www.wasm.ru/
http://www.masm32.com/
http://www.movsd.com/
http://www.masmforum.com/
http://board.win32asmcommunity.net/
и другие.
Но все-таки ассемблер это удел, не многих - вирусы - антивирусы,
криптозащиты-реверсинг, и многое другое. Быстро сляпать и сдать заказчику это конечно HLL(Языки Высокого Уровня, к примеру c#)
Для каждой задачи свой подход.

Но вопрос не в том, что лучше или хуже для однокристалок,
Вопрос в том, можно ли успешно обходиться ассемблером для средних и крупных проектов ?

Глядя на 0x86-архитектуру и макроассембле masm, где к примеру
можно сделать макрос return и в зависимости от операндов
(
определить с помощью директив и макросов, таких как
$IsImm MACRO Operand:REQ
IF (OPATTR (Operand)) AND 00000100y
;; Is an immediate value
EXITM <-1>
ELSE
EXITM <0>
ENDIF
ENDM
)
строить оптимизированый код (если вы знаете как для данного мп),
не хуже опримизатора для c#.

Но в стандартном компиляторе от avr - нет даже директив
типа db, $, нет директив определения процедур.
Может это от отличия каждого нового девайса от другого?

Напрашивается вывод, что для крупных и средних проектов использовать сишные компиляторы, а для мелких можно и асм?
А где же вечные ценности - размер кода, оптимизация по скорости и другое?

Расскажите о существующих компиляторах c# и асм, о их достоинствах и недостатках.
Посоветуйте опытные ветераны-однокристальщики, схемотехники.










a14.gif
aal
>Вопрос в том, можно ли успешно обходиться
> ассемблером для средних и крупных проектов ?

Для средних может и получится...

>Напрашивается вывод, что для крупных и средних проектов
>использовать сишные компиляторы, а для мелких можно и асм?

Да. (до 1-2к кода).

>Но в стандартном компиляторе от avr - нет даже директив
>типа db, $, нет директив определения процедур.

Для AVR С есть IAR и ImageCraft. И в асм файле, помоему, есть...

> А где же вечные ценности
> - размер кода, оптимизация по скорости и другое?

В одном проекте создается файл с функцией на ассемблере(правила на сайте atmel). В С файле объявляете эту функцию внешней.

>о их достоинствах и недостатках.

IAR - Наиболее распространен, много информации (и по глюкам тоже). На уровне 2000г. был оптимальней и удобней ImageCraft (ИМХО).

ImageCraft - Чуть шире гамма поддерживаемых кристалов (от атмела).
vet
>Но в стандартном компиляторе от avr - нет даже директив
>типа db, $, нет директив определения процедур.

Есть в стандартном ассемблере и .DB, и $, и макросы. Почитайте хелп, поставляемый с AVR Studio.

//вот кусок кода для проверки )
.cseg
rjmp $

.dseg
.db 0x05, "12345"
IgorKossak
Цитата(hxdev @ Mar 6 2005, 02:02)
Расскажите о существующих компиляторах c# и асм, о их достоинствах и недостатках.
Посоветуйте опытные ветераны-однокристальщики, схемотехники.
*

На этом и соседних форумах информации, по моему, более чем достаточно.
Надо просто начать (без предвзятости).

PS: под c# Вы именно си-шарп имели в виду или C как таковой (включая C++/EC++)?
PraNkiSh
ябы сказал что в вечные ценности теперь переходит время затраченное на проект и вывод его на рынок.
какой смысл в крутой оптимизации если ты сделал продукт на полгода позже конкурентов, и пусть он получился на 2-5% дешевле по себестоимости.
да, некоторое время назад был уверен и со всеми спорил, убеждая что под микроконтроллеры надо писать исключительно на асме !
сейчас пишу на си wink.gif
ShiphT
Присоединяюсь к PraNkiSh.
Сейчас главное - время выхода продукта. Редко попадаются случаи когда нужно писать на асме, но это только из-за того, что к выбранному в проект кристалу и необходимому набору функций устройства иначе не подступиться. Как пример - есть у меня девайс у которого в 1 к флеша (msp430f1101) сидит вместе с основной функциональностью декодер Рида-Соломона. Делал на асме, потому что а) мало памяти б)нехватка скорости. в) не поставить более мощный - цена устройства 5 баксов. г)устройство батареечно на 10 лет от 1го комплекта.
А вообще, если человек неплохо пишет на асме и С, то выигрыш в скорости и объеме асмовой проги составляет 10-20%. А вот скорость разработки - значительно разнится. Поэтому мало коммерческого смысла писать все проекты на ассемблере.
-Tумблер-
Цитата(hxdev @ Mar 6 2005, 02:02)
Вопрос в том, можно ли успешно обходиться ассемблером для средних и крупных проектов ?


Пишите как Вам нравицца - и у Вас будет отличное пищеварение !
biggrin.gif
Miron
Цитата(PraNkiSh @ Mar 8 2005, 15:51)
ябы сказал что в вечные ценности теперь переходит время затраченное на проект и вывод его на рынок.
какой смысл в крутой оптимизации если ты сделал продукт на полгода позже конкурентов, и пусть он получился на 2-5% дешевле по себестоимости.
да, некоторое время назад был уверен и со всеми спорил, убеждая что под микроконтроллеры надо писать исключительно на асме !
сейчас пишу на си  wink.gif
*


Ну все на си бывает и не напишеш особенно если надо сделать быстрые кусочки для работы с железом. Я пишу на си но асм бросать не собираюсь
в некоторых слючаях вызов процедурки на асм очень очень выручает.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.