Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 27.11.2019, 19:57   #1
25-й кадр
Человек
Форумчанин
 
Регистрация: 04.04.2011
Сообщений: 172
По умолчанию ARM Assembler

Всем доброго времени суток, товарищи!
Довелось мне приобрести одноплатный ПК Rock Pi 4B для работы.
https://ru.aliexpress.com/item/32976...697c33edElpboU

Пришла идея написать для него программу с классическим выводом "Hello, World!", но не программой для линукса, а неким видом ОС. Никогда не программировал на ассемблере, очень захотелось попробовать.

Незнание языка даёт о себе знать, хотел бы получить советов от тех, кто в этом лучше разбирается.

Штудируя интернет наткнулся на такие мануалы/статьи.
1. http://rus-linux.net/MyLDP/algol/asm..._language.html
2. https://marsohod.org/projects/marsoh.../226-arm-instr
3. https://habr.com/ru/post/133808/
4. https://habr.com/ru/post/319736/
5. https://modexp.wordpress.com/2018/10...assembly/#arch
6. http://www.davespace.co.uk/arm/intro...rithmetic.html

Не обошёл стороной и официальный сайт ARM'а.

Ссылка на toolchain:
https://developer.arm.com/tools-and-...nu-a/downloads

Их я отметил, как основополагающие для получения знаний. А так, проштудировал ссылок 30-50, если не больше...

Так же, попался довольно простой видеоматериал по написанию "своей ОС".
https://www.youtube.com/watch?v=9KrZRvJsOeo
Парень пишет код, делает образ системы и выводит сообщение, и делает это всё в эмуляции i386, что мне не подходит.

Почитав про регистры ARM и i386(или общепринятыми можно назвать, не знаю точно, поправьте), так же нашёл различия.
У i386 используются компиляторы FASM, TASM, MASM(эта тройка часто встречалась при прочтении), у ARM(A-Family, 64bit) же используется, как я понял, aarch64. ARM-A(32bit) использует aarch32. У них так же присутствуют различия в написании, у 32bit пишутся регистры с буквой "r", например: r0-r12 регистры общего назначения, SP r13 содержит указатель стека выполняемой программы, LR r14 содержит адрес возврата в инструкциях ветвления, PC r15 счётчик команд, у 64bit с буквой "x": x0-x12, x13, x14, x15.
Не раз прочитав статью под №1, понял, что мне ещё нужно будет писать некий драйвер для связи с видеопамятью. В интернете нашёл, что для связи с видеопамятью используется адрес 0xB8000. Не знаю, к чему его отнести, или так у всех можно сделать, или у ARM как-то по-своему(к чему я больше и склоняюсь).

Прошу наставлений и помощи в этом (не)лёгком деле. Спасибо за внимание!
Это вам не это

Последний раз редактировалось 25-й кадр; 28.11.2019 в 09:56.
25-й кадр вне форума Ответить с цитированием
Старый 28.11.2019, 08:49   #2
25-й кадр
Человек
Форумчанин
 
Регистрация: 04.04.2011
Сообщений: 172
По умолчанию

Нашёл вот такой ресурс:
https://godbolt.org/
Просмотрев местные компиляторы, сравнив с формой записи ассемблера из пунктов 1 и 5, выбрал более подходящий по форме записи - "ARM armclang 19.3".

По поводу адреса видеопамяти 0xB8000 нашёл подсказку на форуме
https://forum.osdev.org/viewtopic.php?p=131248
от пользователя - codemastersnake.
Цитата:
0xA0000 is the pointer address to the Graphical Mode and 0xB8000 is the pointer address to the Color Text Mode and 0xB0000 is the pointer to the Monochrome text Mode.
Изображения
Тип файла: jpg Снимок.jpg (58.1 Кб, 10 просмотров)
Это вам не это

Последний раз редактировалось 25-й кадр; 28.11.2019 в 09:17.
25-й кадр вне форума Ответить с цитированием
Старый 28.11.2019, 13:10   #3
25-й кадр
Человек
Форумчанин
 
Регистрация: 04.04.2011
Сообщений: 172
По умолчанию

Как я понял, aarch64 используется для компилирования просто программы под linux/windows.
Есть ARM Compiler https://developer.arm.com/tools-and-...oads/version-6 который требует лицензии. По крайней мере, у меня. А лицензию требуется купить... К сожалению, финансы поют романсы.

Может быть кто-то знает аналоги FASM, TASM, MASM для ARM? Или что-то, чтобы можно было получить в конце файл bin?
Это вам не это
25-й кадр вне форума Ответить с цитированием
Старый 28.11.2019, 16:24   #4
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,053
По умолчанию

Цитата:
Сообщение от 25-й кадр Посмотреть сообщение
Может быть кто-то знает аналоги FASM, TASM, MASM для ARM? Или что-то, чтобы можно было получить в конце файл bin?
gas

Я бы и пытаться не стал. Отсутствие внятной документации на сайте ARM по вызову сопроцессоров, алгоритма проверки поддерживаемого набора инструкций. И прочее прочее и прочее ставит на разработке крест. Тут только реверсить чужие программы и смотреть что там, да как. Долгий и нудный путь.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia на форуме Ответить с цитированием
Старый 28.11.2019, 18:30   #5
25-й кадр
Человек
Форумчанин
 
Регистрация: 04.04.2011
Сообщений: 172
По умолчанию

Спасибо за подсказку.
Мне подсказали по поводу документации и вот, что я нашёл.

Референс по процессору.
http://rockchip.fr/
В конце есть документы Rockchip RK3399 TRM 1.3 - 2 части и 1.4 - 1 часть.

Референс по архитектуре armv8-a.
https://developer.arm.com/docs/ddi04...ecture-profile
Это вам не это
25-й кадр вне форума Ответить с цитированием
Старый 28.11.2019, 19:53   #6
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,053
По умолчанию

Цитата:
Сообщение от 25-й кадр Посмотреть сообщение
Мне подсказали по поводу документации и вот, что я нашёл.
Лучше ищите Bare Metal прошивки и FreeRTOS под ваш процессор. А дальше диз-ассемблировать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia на форуме Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Assembler] преобразование строчных букв в прописные на assembler Alexey3191 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 16.09.2018 20:21
Как преобразовать байт-код (в шестнадцатеричной системе счисления) в команды assembler? - Assembler SandersSh Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 17.11.2017 19:04
Assembler (AVR) PHC Помощь студентам 0 29.06.2014 19:26
Assembler Николай ПН Помощь студентам 22 21.03.2010 22:28
DOS Fn 16H (Assembler) Flinka Помощь студентам 2 27.05.2009 22:21