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

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

7 hours ago, kovigor said:

Даже простейшее окошко с парой кнопочек вывести не так-то просто ...

Да чтож это такое)))) Ещё как просто. Выводил. Знаю.

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


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

15 часов назад, kovigor сказал:

Даже простейшее окошко с парой кнопочек вывести не так-то просто ...

Написать несколько PUSH и один CALL (на каждое из окошек/кнопочек) - это "можно сойти с ума"? Да уж.... тогда понятно почему ассемблер ARM для вас невероятно сложен... :biggrin:

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


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

Там на WIN API все завязано, с кучей параметров и с их передачей через стек.

Просто
 

push cs

pop ds

 

сделать не получится ...

 

Читал Румянцева, у него цикл книг по программированию с использованием WIN32 API. Полезно, интересно, но ... писать все это на ассемблере ...:boredom:

Он, кстати, сам использовал Си ...

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


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

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

Там на WIN API все завязано, с кучей параметров и с их передачей через стек.

Что такое WinAPI - мы тоже знаем, не надо пугать страшными непонятными словами. :wink:

А нарисовать окошко (или кнопочку) на WinAPI на асме выглядит примерно так:

  push  eax                                 
  push  4                                   
  lea eax, DWORD PTR [esi+356]              
  push  eax                                 
  push  DWORD PTR _dc$[ebp+4]               
  call  DWORD PTR __imp__DrawFrameControl@16

И даже POP-ить не нужно: по соглашениям вызова WinAPI, вызываемая функция сама освободит стек.

 

Как видите - получилось. И очень даже просто. Как я и писал.  :unknw:

А если это ещё завернуть в макрос (как выше уже посоветовали), то будет ещё лаконичнее.

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


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

27.06.2021 в 13:22, jcxz сказал:

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

Вообще-то это не так. В мануале на ядро написаны машинные коды и для понимания чего они делают одна из реализаций этих кодов на Асме. В общем случае конкретная реализация ассемблера обязана компилироваться в заданный машинный код, но вот синтаксис реализации может быть любой. Хоть графический с квадратиками и стрелочками.

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


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

11 часов назад, artemkad сказал:

Вообще-то это не так. В мануале на ядро написаны машинные коды

Что это за "мануал" такой? Можете дать ссылку?

А то в наших во всех (от самого ARM-а) описан именно ассемблер и именно одного единственного синтаксиса. А машинные коды: надо ещё поискать - не так просто найти.

"Cortex ™ -M4 Devices. Generic User Guide"

scr-002.thumb.png.c089e778906eb8f055e90df02231650d.png

 

PS: Или может вы какой-то свой мануал написали?  :wink:

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


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

12 часов назад, jcxz сказал:

А то в наших во всех (от самого ARM-а) описан именно ассемблер

Вообще-то у всех АРМов унифицированная система команд  и в "ваших" только уточняется чего в данной серии есть.

 

Потому сами коды искать в общих для всей архитектуры документах. А-ля  "ARM ....  Instruction Set Architecture"

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


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

Мне кажется, Вы, @artemkad, чего-то выдумываете. Да, ARM предоставляет бинарные опкоды команд в референс-мануале на архитектуру ядра (а не на конкретную его реализацию). Однако каждому опкоду там дана мнемоника (сокращенный эквивалент на человеческом языке), которая и является основополагающей частью ассемблера. Вы же (если программировали на ассемблере) не создаете в памяти массив из опкодов (?), надеюсь, а пишете последовательность мнемоник. А то, что Вы имели в виду под интерпретациями (графическими, и т.д.), скорее всего, сначала транслируется в Си-код. Тот же StateFlow в Simulink взять, к примеру - рисуем блок-схемы и получаем Си-код.

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


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

22 часа назад, jcxz сказал:

Что это за "мануал" такой? Можете дать ссылку?

...

А машинные коды: надо ещё поискать - не так просто найти.

ARM®v7-M Architecture Reference Manual

1812530367_.thumb.png.dad2b3962668a0a446762775042dde9a.png

2020361689_.thumb.png.dfb3b012118611feb6d5c985f14c2952.png

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


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

12 часов назад, artemkad сказал:

только уточняется чего в данной серии есть.

Вообще-то не "только уточняется чего есть", а дано описание каждой команды. Вполне достаточное, чтобы писать программу на ассемблере.

12 часов назад, artemkad сказал:

Потому сами коды искать в общих для всей архитектуры документах. А-ля  "ARM ....  Instruction Set Architecture"

Команды ассемблера есть во множестве документов, в том числе и в документациях на МК конкретных производителей. А вот маш.коды для них: ещё поискать нужно - мало где описаны. Потому как обычно нафик никому не нужны.

И вообще: какое отношение имеют маш.коды к ассемблеру? Вы понимаете между ними разницу?

Здесь: 

 

Вы оспариваете мое утверждение, только не понятно, что именно оспариваете: что 1) синтаксис ассемблера для ARM - единственный (официальный); или 2) что он описан в мануалах на ядро?

На просьбу привести доказательства (п.1 или п.2) уводите разговор в сторону, в маш.коды (хотя моё утверждение их вовсе не касалось).

 

PS: По существу есть что сказать? Или просто очень хочется поспорить?

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


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

3 часа назад, Arlleex сказал:

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

Там дана мнемоника для конкретной реализации ассемблера. При желании Вы можете написать свой ассемблер с другими мнемониками которые Вам больше нравятся которые однозначно будут компилироваться в ARM-опкоды и это тоже будет ассемблер для ARM-ов. Т.е. исходными и неизменными для данной архитектуры и каждой её реализации в частности являются только машинные коды. А как выглядит исходный код программы это уже дело вкуса создателей конкретной реализации компилятора.

 

3 часа назад, Arlleex сказал:

А то, что Вы имели в виду под интерпретациями (графическими, и т.д.), скорее всего, сначала транслируется в Си-код.

Вообще-то это гораздо сложнее. Даже транслировать в Асм сложнее чем тупо компилировать в машинные коды.

Под графическим имел ввиду, естественно, Algorithm Builder для AVR.

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


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

3 часа назад, jcxz сказал:

Вообще-то не "только уточняется чего есть", а дано описание каждой команды. Вполне достаточное, чтобы писать программу на ассемблере.

Нет, недостаточно. Необходим еще компилятор который понимает именно это синтаксис ассемблера и именно для этого контроллера.

3 часа назад, jcxz сказал:

И вообще: какое отношение имеют маш.коды к ассемблеру?

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

3 часа назад, jcxz сказал:

единственный (официальный)

Так единственный или официальный? Вы же сами понимаете что это совсем не одно и то же. Кстати, помнится у GAS свои заморочки с синтаксисом.

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


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

2 часа назад, artemkad сказал:

Кстати, помнится у GAS свои заморочки с синтаксисом.

Ага: для x86 было больно. Для Cortex-M ничего не почувствовал.

PS. Думаю, можно расходиться - очередной "новичок" забросил сомнительную тему и пропал.

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


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

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

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

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

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

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

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

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

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

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