![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Человек
Форумчанин
Регистрация: 04.04.2011
Сообщений: 178
|
![]()
Всем доброго времени суток, товарищи!
Довелось мне приобрести одноплатный ПК 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 в 08:56. |
![]() |
![]() |
![]() |
#2 | |
Человек
Форумчанин
Регистрация: 04.04.2011
Сообщений: 178
|
![]()
Нашёл вот такой ресурс:
https://godbolt.org/ Просмотрев местные компиляторы, сравнив с формой записи ассемблера из пунктов 1 и 5, выбрал более подходящий по форме записи - "ARM armclang 19.3". По поводу адреса видеопамяти 0xB8000 нашёл подсказку на форуме https://forum.osdev.org/viewtopic.php?p=131248 от пользователя - codemastersnake. Цитата:
Это вам не это
Последний раз редактировалось 25-й кадр; 28.11.2019 в 08:17. |
|
![]() |
![]() |
![]() |
#3 |
Человек
Форумчанин
Регистрация: 04.04.2011
Сообщений: 178
|
![]()
Как я понял, aarch64 используется для компилирования просто программы под linux/windows.
Есть ARM Compiler https://developer.arm.com/tools-and-...oads/version-6 который требует лицензии. По крайней мере, у меня. А лицензию требуется купить... К сожалению, финансы поют романсы. Может быть кто-то знает аналоги FASM, TASM, MASM для ARM? Или что-то, чтобы можно было получить в конце файл bin?
Это вам не это
|
![]() |
![]() |
![]() |
#4 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]() Цитата:
Я бы и пытаться не стал. Отсутствие внятной документации на сайте ARM по вызову сопроцессоров, алгоритма проверки поддерживаемого набора инструкций. И прочее прочее и прочее ставит на разработке крест. Тут только реверсить чужие программы и смотреть что там, да как. Долгий и нудный путь.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
![]() |
![]() |
![]() |
#5 |
Человек
Форумчанин
Регистрация: 04.04.2011
Сообщений: 178
|
![]()
Спасибо за подсказку.
Мне подсказали по поводу документации и вот, что я нашёл. Референс по процессору. http://rockchip.fr/ В конце есть документы Rockchip RK3399 TRM 1.3 - 2 части и 1.4 - 1 часть. Референс по архитектуре armv8-a. https://developer.arm.com/docs/ddi04...ecture-profile
Это вам не это
|
![]() |
![]() |
![]() |
#6 |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
![]()
Лучше ищите Bare Metal прошивки и FreeRTOS под ваш процессор. А дальше диз-ассемблировать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
[Assembler] преобразование строчных букв в прописные на assembler | Alexey3191 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 16.09.2018 19:21 |
Как преобразовать байт-код (в шестнадцатеричной системе счисления) в команды assembler? - Assembler | SandersSh | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 4 | 17.11.2017 18:04 |
Assembler (AVR) | PHC | Помощь студентам | 0 | 29.06.2014 19:26 |
Assembler | Николай ПН | Помощь студентам | 22 | 21.03.2010 21:28 |
DOS Fn 16H (Assembler) | Flinka | Помощь студентам | 2 | 27.05.2009 22:21 |