Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ASM или C?
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
adnega
Всем привет. Решил изучать arm (lpc21xx), но не могу определиться: то ли на C писать, то ли на asm. Все примеры приводятся на C. Есть смысл отказываться?
DRUID3
Смотря какие цели ставятся...
adnega
По целям мне подходит asm. Боюсь собеседников потерять...
misyachniy
Цитата(adnega @ May 14 2007, 06:58) *
По целям мне подходит asm. Боюсь собеседников потерять...

У IAR я не нашел документа типа "Mixing C and ASM" для ARM.
Рекомендуют писать на С, выводить листинк ASM и по его образу и подобию переписиывать функции требующие повышенного быстродействия.
sergeeff
Цитата(adnega @ May 14 2007, 07:58) *
По целям мне подходит asm. Боюсь собеседников потерять...


Этот вопрос уж не знаю сколько раз повсюду в inet'e и в литературе обсуждался. Есть смысл писать на asm'e только критичные по скорости функции, или те, которые завязаны на обращение к специфическим узлам процессора или его периферии. Все остальное - потеря времени разработчика.
scifi
Цитата(sergeeff @ May 14 2007, 08:04) *
Этот вопрос уж не знаю сколько раз повсюду в inet'e и в литературе обсуждался. Есть смысл писать на asm'e только критичные по скорости функции, или те, которые завязаны на обращение к специфическим узлам процессора или его периферии. Все остальное - потеря времени разработчика.

Поддерживаю.
zltigo
Цитата(misyachniy @ May 14 2007, 07:02) *
У IAR я не нашел документа типа "Mixing C and ASM" для ARM.

Ну во-первых про mixing поминаение есть, а во-вторых Advanced RISC Machines Ltd ARM/Thumb Procedure Call Standard. Сие есть официальный документ. Лежит на армовском сайте.
adnega
Очевидно. За этим языки высокого уровня и создавались. Почему в моем случае можно сделать исключение, потому что я программирую для задач реального времени. Компилятор хуже справляется с оптимизацией по быстродействию/размеру кода, чем я. Я хочу создать asm библиотеку нужных мне функций, и меня интересует, почему все иллюстрируется на C (хотя мне понятней asm)? Пожалуй многое зависит от компилятора...
АРМ я начал изучать несколько дней назад. Мощная вещь - на asm таких "финтов" можно наделать...
GetSmart
Вообще-то линейный код компилятор делает почти идеально. Я сам спец по асму и фанат быстродействия, но не имею претензий к компилятору ИАР 4.20. Имеет смысл писать на асме только очень критические циклы. Которые можно легко вставить в сишный файл. А в остальном как уже писали - напрасная трата времени.
zltigo
Цитата(adnega @ May 14 2007, 07:54) *
Почему в моем случае можно сделать исключение, потому что я программирую для задач реального времени.

Вы не первый smile.gif
Цитата
Компилятор хуже справляется с оптимизацией по быстродействию/размеру кода, чем я.

А это уже не факт. Пока Вы соревнуетесь в простейших задачах о несколько десятков команд, у Вас есть все шансы обогнать компилятор потратив при этом некоторое время. Но, на больших сложных кусках шансы, что компилятор сделает Вас становятся очень высокими. По любому аккуратно и четко выраженная выраженная на С мысль очень хорошо понимается компиляторами и накладные расходы едва-ли превышают десяток процентов против кропотливой ручной работы. Посему лучше направьте усилия на освоение, понимание и владение "C". Ну а на ARM-ASM уж самые узкие места расшивать можно - по полсотни команд, не более.
sd1074
Извините за "не в тему", но грустно за ассемблер sad.gif Он уже и для контроллеров не очень и нужен, а уж для ПК и подавно...
DRUID3
Цитата(sd1074 @ May 14 2007, 08:27) *
Извините за "не в тему", но грустно за ассемблер sad.gif Он уже и для контроллеров не очень и нужен, а уж для ПК и подавно...

Он нужен для "писальщиков" компиляторов, или людей решивших вжиться в архитектуру кристалла на котором они работают. Лично мои задачи ужасно далеки от супер оптимизации, а личные амбиции вообще лежат в другой области, и с asm я практически не работаю... Думаю похожая ситуация у многих…
bus16
В принципе и сам ARM разрабатывался для удобства программирования на языках высокого уровня.
blackbit
Пробовал под него целиком на ASM. Божественно, но не окупается.
iit
Цитата(adnega @ May 14 2007, 07:54) *
Очевидно. За этим языки высокого уровня и создавались. Почему в моем случае можно сделать исключение, потому что я программирую для задач реального времени. Компилятор хуже справляется с оптимизацией по быстродействию/размеру кода, чем я. Я хочу создать asm библиотеку нужных мне функций, и меня интересует, почему все иллюстрируется на C (хотя мне понятней asm)? Пожалуй многое зависит от компилятора...
АРМ я начал изучать несколько дней назад. Мощная вещь - на asm таких "финтов" можно наделать...


Не помню откуда: "Вам шашечки или ехать?"

Так вот, если вам "шашечки", то занимайтесь асмом. Изучите мат. часть в совершенстве, мозги потренируете, да и вообще, программописательство на асме дает глубокое понимание архитектуры и процессов происходящих на низком уровне.

А если вам "ехать" да еще и побыстрее - С, С и только С. Ну иногда С++ можно smile.gif Сам много лет писал на асме, с трудом ЗАСТАВИЛ себя пересесть за С - теперь за уши не отташишь. И забейте на то что код получается не оптимальным, зато других преимуществ вагон. Если освоите С, сами все поймете.
zltigo
Цитата(iit @ May 14 2007, 09:13) *
Изучите мат. часть в совершенстве, мозги потренируете, да и вообще, программописательство на асме дает глубокое понимание архитектуры и процессов происходящих на низком уровне.

Нормальное (а не компиляция массы мутных исходников из 'интернету' и шитье их белыми нитками ) писание на "C" требует и мозгов, и их тренировки, и понимания... smile.gif Причем на самом деле большего smile.gif,
ибо задачи неизбежно начинают возникать и покоряться все более сложные!
adnega
Всем спасибо за ответы/советы. Что ж возьмусь за изучение C... Изучать лучше на примерах или есть учебник какой? Дело в том, что опыт C++ есть громадный, меня волнует специфика C под АРМ, чтобы сразу начать писать "в духе" АРМ.
zltigo
Цитата(adnega @ May 14 2007, 09:36) *
Дело в том, что опыт C++ есть громадный

Тогда проблемы равны 0.
Цитата
..... меня волнует специфика C под АРМ, чтобы сразу начать писать "в духе" АРМ.

Ее почти нет. Разве только строгая 32bit битность (в отличие от, например, x86) сказывается на оптимальности при работе c, например, пакованными структурами. Впрочем это и по ASM видно smile.gif
На первом этапе можете не зморачиваться совсем, ну а дальше почувствуете, если захотите.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.