Перейти к содержанию
    

ассемблер для atmel, переносимость программ

Я начинающий для однокристалок, но "испорчен" CISC-архитектурой и программированием на ассемблерах(masm32,tasm,fasm,nasm) под windows для 0x86.

Я думаю понятно, что microsoft не ахти как поощеряет это дело,

не было ни инклюдников с константами, ни прототипов api-функций,

и все было против ассемблерщиков под windows, еще лет 5 назад, сказав,

что ты программируешь на асемблере под windows тебя обозвали бы гадким астматиком, и атавизмом программирования. Но сейчас ситуация изменилась -

есть все, что надо - и инклюдники и IDE( их примерно десяток, самое яркое это конечно RADASM (http://radasm.visualassembler.com/) - сишные программисты синеют от злости:)) , и примеров море и написана куча макросов, посмотрите как цветут и пахнут

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:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>Вопрос в том, можно ли успешно обходиться

> ассемблером для средних и крупных проектов ?

 

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

 

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

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

 

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

 

>Но в стандартном компиляторе от avr - нет даже директив

>типа db, $, нет директив определения процедур.

 

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

 

> А где же вечные ценности

> - размер кода, оптимизация по скорости и другое?

 

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

 

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

 

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

 

ImageCraft - Чуть шире гамма поддерживаемых кристалов (от атмела).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

>Но в стандартном компиляторе от avr - нет даже директив

>типа db, $, нет директив определения процедур.

 

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

 

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

.cseg

rjmp $

 

.dseg

.db 0x05, "12345"

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

На этом и соседних форумах информации, по моему, более чем достаточно.

Надо просто начать (без предвзятости).

 

PS: под c# Вы именно си-шарп имели в виду или C как таковой (включая C++/EC++)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

какой смысл в крутой оптимизации если ты сделал продукт на полгода позже конкурентов, и пусть он получился на 2-5% дешевле по себестоимости.

да, некоторое время назад был уверен и со всеми спорил, убеждая что под микроконтроллеры надо писать исключительно на асме !

сейчас пишу на си ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяюсь к PraNkiSh.

Сейчас главное - время выхода продукта. Редко попадаются случаи когда нужно писать на асме, но это только из-за того, что к выбранному в проект кристалу и необходимому набору функций устройства иначе не подступиться. Как пример - есть у меня девайс у которого в 1 к флеша (msp430f1101) сидит вместе с основной функциональностью декодер Рида-Соломона. Делал на асме, потому что а) мало памяти б)нехватка скорости. в) не поставить более мощный - цена устройства 5 баксов. г)устройство батареечно на 10 лет от 1го комплекта.

А вообще, если человек неплохо пишет на асме и С, то выигрыш в скорости и объеме асмовой проги составляет 10-20%. А вот скорость разработки - значительно разнится. Поэтому мало коммерческого смысла писать все проекты на ассемблере.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Пишите как Вам нравицца - и у Вас будет отличное пищеварение !

:biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость Miron
ябы сказал что в вечные ценности теперь переходит время затраченное на проект и вывод его на рынок.

какой смысл в крутой оптимизации если ты сделал продукт на полгода позже конкурентов, и пусть он получился на 2-5% дешевле по себестоимости.

да, некоторое время назад был уверен и со всеми спорил, убеждая что под микроконтроллеры надо писать исключительно на асме !

сейчас пишу на си  ;)

 

Ну все на си бывает и не напишеш особенно если надо сделать быстрые кусочки для работы с железом. Я пишу на си но асм бросать не собираюсь

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...