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

Какой диалект ассемблера изучать(NASM, FASM, MASM) для мк?

Здравствуйте дорогие форумчане. Я решил немного изучить assembler для мк. Помогите пожалуйста. Какой диалект ассемблера изучать(NASM, FASM, MASM) для мк?

Я  думаю NASM но не уверен

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


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

5 минут назад, Creative Mango сказал:

Какой диалект ассемблера изучать(NASM, FASM, MASM) для мк?

У МК есть только один ассемблер: он описан в мануале на его ядро. И нет никаких "диалектов". Его и изучать.

5 минут назад, Creative Mango сказал:

Я  думаю NASM но не уверен

А этот самый NASM про ваш МК знает?  :biggrin:

 

PS: И о каком МК вообще речь?

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


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

Ну я вообще первый раз лезу в ассемблер. МК Atmega8

3 минуты назад, jcxz сказал:

он описан в мануале на его ядро

Спасибо

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


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

То, что Вы перечислили (NASM, FASM, MASM), правильнее называть: "трансляторы с языка ассемблера". Каждый, как правило, понимает ассемблер одной из существующих архитектур.

От того - какой транслятор будете использовать, главным образом будет зависеть синтаксис директив ассемблера (он может быть разным у разных трансляторов). Сами же команды (их мнемоники, регистры, способы адресации и т.д.) - определяются архитектурой. И читаются в мануале на эту архитектуру (ядро).

Правда иногда у одной и той же архитектуры бывают не один, а два (может и более) набора мнемоник. И транслятор может понимать или тот или другой или оба.

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


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

Для 8051 ассемблер очень приятный и имеет вполне человеческое лицо (как и для 8086).

Для AVR ассемблер терпимый и в случае необходимости писать на нем можно. Но лучше писать на ЯВУ.

Для ARM ассемблер (ИМХО) вообще не рассчитан на то, что на нем будет писать программист-человек. Тут нужен не обычный программист, а программист-мазохист. А его начальник должен быть садистом. Но понимать (а не писать на нем !!!) АСМ для ARM все же не помешает, т.к. это поможет вам в отладке и в понимании того, как устроены .s - файлы.

 

Все это чисто мое мнение, я не хотел никого задеть ...

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


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

8 минут назад, kovigor сказал:

Для ARM ассемблер (ИМХО) вообще не рассчитан на то, что на нем будет писать программист-человек.

Нормальный ассемблер у ARM и он проще, чем у x86. Вообще - пожалуй он самый простой из тех, которые знаю.

Вы видимо никогда не видели ассемблеров DSP. Особенно - для VLIW-ядер.  :crazy:

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


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

Не видел. Мне ARM'а хватило. Писать на нем не пришлось, для этого у меня есть Си. А вот разбирать АСМ - код при отладке или чтении .s - файлов иногда приходится. Но это на два порядка проще, чем писать на АСМе ...

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


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

1 час назад, Creative Mango сказал:

Я решил немного изучить assembler для мк. Помогите пожалуйста. Какой диалект ассемблера изучать (NASM, FASM, MASM) для мк?

Я  думаю NASM но не уверен

Я наверное отстала от жизни :), т.к. до сих пор считаю, что MASM, FASM и NASM - компиляторы для процессоров архитектуры x86/x64, а вовсе не для МК.

Уже давно пописываю на ассемблере для ПК, еще со времен TASM (Turbo Assembler из ранних поделок компании Borland, к которому позднее писали дополнения).

А что касается компиляторов ассемблера для МК, то здесь, на мой взгляд, принцип выбора тот же, что и для ПК - следует выбирать тот, который входит в комплект языка более высокого уровня, которым вы владеете. Например, использовать MASM (ныне он называется ml.exe), если пишете на MS Visual Studio. Это дает возможность писать на смеси языков, используя ассемблер там, где требуется ускорить выполнение каких-то процедур. С этой стороны имеет смысл обратить внимание на компиляторы языка C/C++ от компании IAR, в комплект которых входит и компилятор с ассемблера. Это обстоятельство позволяет писать на смеси языков, используя один и тот же линкер. А для тех, кто изучает ассемблер в качестве второго языка, такая возможность - сущий подарок, поскольку позволяет сперва посмотреть на код функции , которую генерит компилятор C/C++, чтобы потом его отредактировать и использовать уже в ассемблерной версии.

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


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

23 minutes ago, Xenia said:

... пописываю на ассемблере для ПК, еще со времен TASM ...

Ксения, вы пишете на АСМе под Windows ?

Я в свое время очень много писал на АСМе, но под DOS. А вот чтобы под Windows ...

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


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

3 hours ago, kovigor said:

Тут нужен не обычный программист, а программист-мазохист

Откуда же такие обобщения? Нормальный ассемблер.

3 hours ago, kovigor said:

Но это на два порядка проще, чем писать на АСМе ...

Не так уж там всё и запутанно. Если говорить про Cortex-M0 то вообще порядка 50 с копейками команд. И никаких постфиксов (суффиксов)  кроме команды перехода B. Для Cortex-M3 и выше команд больше, и появляются уже суффиксы. Но это дело техники, и вполне осваиваемо. Поверьте, русский язык тоже сложен для многих. Тем не менее, вы же его освоили)

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


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

4 часа назад, kovigor сказал:

Ксения, вы пишете на АСМе под Windows ?

Я в свое время очень много писал на АСМе, но под DOS. А вот чтобы под Windows ...

Я пишу на ASM'е времякритичные процедуры, а не программы целиком. А потому эволюция здесь направлена только в сторону увеличения разрядности: писать под DOS = писать 16-разрядный код, писать под WinXP = писать 32-разрядный код, писать под современные ОС = писать 64-разрядный код. Писать 64-разрядный код начала сравнительно недавно (2 года назад), а раньше писала только 32-разрядный. Причем, основное поле моих ассемблерных занятий - это возня с SSE/AVX-инструкциями в пакетном режиме (это когда операция параллельно выполняются сразу над несколькими аргументами). Тогда как обычные компиляторы добровольно пакетный режим никогда не используют. Мечтаю в будущем заполучить процессор типа Intel Rocket Lake, умеющий выполнять инструкции AVX-512. Тогда бы в длинные регистры поместилось бы 512/64=8 чисел типа double, что позволило бы еще больше ускорить флоат-арифметику за счет параллелизма. Тогда как надежд на то, что тактовая частота процессоров значительно превзойдет 5 ГГц, уже не осталось.

,    

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


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

17 minutes ago, Xenia said:

Я пишу на ASM'е времякритичные процедуры, а не программы целиком.

Я почему спросил - для меня писать под Windows (на АСМе) = создавать оконный интерфейс посредством WIN API + реализовывать прикладную часть. И если второе более-менее подъемно, то на первом можно сойти с ума. Даже простейшее окошко с парой кнопочек вывести не так-то просто ...

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


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

47 минут назад, Xenia сказал:

это возня с SSE/AVX-инструкциями в пакетном режиме

А интринсиков для этих целей не хватает?

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


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

1 час назад, Grizzly сказал:

А интринсиков для этих целей не хватает?

Можно и на интринсиках, однако к их именам приходится привыкать, тогда как AVX-инструкций много (велико разнообразие). Так стоит ли овчинка выделки? - Стоит ли привыкать к этим именам, когда у инструкций есть свои "родные" имена (далеко не всегда совпадающие с интринсиками). Тем более что тогда пришлось бы писать на интринсиках всё подряд, включая оформление циклов. А здесь есть свои тонкости - например, инструкция LOOP, типично используемая для "циклизации" в 64-разрядном коде, работает заметно медленнее, чем декремент с сравнением.

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


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

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

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

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

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

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

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

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

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

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