Тёмный

Ассемблер RISC-V под голое железо. Часть 1. Hello, World! 

CityAceE
Подписаться 1,6 тыс.
Просмотров 3,5 тыс.
50% 1

В этом ролике мы вкратце познакомимся с процессорами архитектуры RISC-V, развернём простую среду разработки, а также напишем, скомпилируем и запустим простейшую программа на ассемблере, и разберём как она работает.
Telegram: t.me/bare_asm
Все материалы из роликов на GitHub: github.com/CityAceE/risc-v_as...
Notepad++: notepad-plus-plus.org/
Toolchain RISC-V: gnutoolchains.com/risc-v/
QEMU: www.qemu.org/
Это же видео на других площадках:
/ @cityacee
rutube.ru/channel/24637489/
dzen.ru/cityacee
video/@cityacee

Кино

Опубликовано:

 

24 мар 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 59   
@GudinVladimir
@GudinVladimir Месяц назад
Да, было бы очень интересно посмотреть про работу с фреймбуфером! Спасибо за ролик.
@alekmit13
@alekmit13 Месяц назад
Спасибо! Очень интересно!
@parallelno
@parallelno Месяц назад
Браво! Спасибо за проделанную работу!
@dobroliub1908
@dobroliub1908 Месяц назад
Спасибо! Только вперёд!
@diloL
@diloL Месяц назад
Случайно наткнулся на ваш видос Интересно и познавательно, рад, что подобное попадается в моей ленте
@svofski
@svofski Месяц назад
first! спасибо, было интересно
@dkalmykov
@dkalmykov Месяц назад
Спасибо! С удовольствием адаптировал инструменты под линукс и повторил весь процесс. Но ARM, пожалуйста, не забрасывайте, хочется пройти до финала.
@mep3mep350
@mep3mep350 Месяц назад
в России тоже начали делать какие-то контроллеры на RISC-V. а значит скоро эта архитектура станет использоваться в промышленности и в госзакупках. для рф важная тема, более перспективная возможно чем arm.
@user-bh2ot5ks8f
@user-bh2ot5ks8f Месяц назад
О! Отлично про эту архитектуру я почти ничего не знаю!
@nickhouse777
@nickhouse777 Месяц назад
Познавательно👍 Спасибо!!!
@StasWoronkow
@StasWoronkow Месяц назад
Про FB надо делать!
@GlazkinSergey
@GlazkinSergey Месяц назад
чтото новое узнать это хорошо, если ,конечно, чтото старое уже полностью освоено / усвоено, например armv7 и какой нибудь soc с ним. Вот бы звук издать устройством или в видеокамеру заглянуть 😅
@Alexander_Gurov_RF
@Alexander_Gurov_RF Месяц назад
На RPi звук выводится дубово, через ШИМ. Чем то похоже на Covox. Значения ШИМ из буфера выводятся по прерыванию от таймера.
@alexloktionoff6833
@alexloktionoff6833 Месяц назад
Производительных десктопных RISCV еще ждать и ждать, одно для бесплатно стянуть систему команд, а совсем другое это накрутить на нее конвеерность, суперскалярность и т.п. чтоб за такт делать в разы больше. Такие ноу-хау имеют только солидные конторы, и отдавать свои дизайны за песплатно не собираются, они их лицензируют на тех-же условиях что и АРМ.
@mep3mep350
@mep3mep350 Месяц назад
главное сохранение совместимости софта. даже если у тебя проц говно и без проприетарных фишек - софт на нем должен кое-как заработать. железо это полдела - софт это тоже куча человеко-часов. в условиях ограниченных ресурсов это очень критично не изобретать велосипеды.
@alexloktionoff6833
@alexloktionoff6833 Месяц назад
@@mep3mep350Да софт тоже придется оптимизировать под разные версии RISCV.
@AvitoB0T
@AvitoB0T Месяц назад
11:50 ASCII символы!
@brill2k
@brill2k Месяц назад
После PlayStation 1&2 все опкоды оказались до боли знакомы. Автору успехов и ждёмс продолжения riscv уроков. А, и второй раз рекомендую использовать плагин nppexec, что позволит избавиться от батников и компилить из npp нажатием одной клавиши.
@CityAceE
@CityAceE Месяц назад
Спасибо за рекомендацию. Возможно, я лично приму её на вооружение. Но в роликах не хотелось бы привязывать зрителей именно к Notepad++.
@kakosnonos4541
@kakosnonos4541 Месяц назад
@@CityAceE Плагин полезный, тоже им пользуюсь
@b213videoz
@b213videoz Месяц назад
Очень интересно б твои видео посмотреть о программировани FPGA
@alexorlovecky6662
@alexorlovecky6662 Месяц назад
Вот у всех открытых технологий, есть один большой косяк: каждый делает чё ему взбредёт в голову. Даже у проприетарных системах есть косяки в документации/ совместимости (как минимум у того же стм32 лично мной их было выявлено дофига, особенно в H7 ), так то у французов... Даже представить боюсь, во что это превратится у китайцев с риск-5.
@alexloktionoff6833
@alexloktionoff6833 Месяц назад
Да уже есть расхождения в реализации плавающей точки у HUAWEI. Но прелесть RISCV в том что можно реализовывать подмножества команд, это на порядок проще и совместимей, но конечно не для APPLICATION уровня процессоров, а для микро-контроллеров пойдет
@alexorlovecky6662
@alexorlovecky6662 Месяц назад
@@alexloktionoff6833 Можно реализовать что угодно, но это преимущество не потребителя/ разработчика программного обеспечения, а преимущество производителя этого самого процессора. Разработчику софта, необходим чёткий мануал. И вот с этим как раз я и вижу все беды. Особенно когда производители китайцы. стм32 привёл как пример, у них и очепятки в документации к периферии, есть недоработки в компиляторе (при использовании H7, невозможно нормально размечать внешнюю память, которую нужно инициализировать). Но с ними можно разговаривать. Как и кто будет разговаривать с китайцами? А в конце, всё может быть, как с Nvidia: хотите документацию? Заплати бабла, подпиши документ о неразглашении. Был у меня недавно один проект, нужен был монохромный графический модуль с высоким разрешением. Проект "одноразовый". Нашёл офигенный модуль и будь дураком, сперва не нашёл документацию, купил на попробовать. Потом пошёл гуглить, понял, что гугл про него ничего не знает. Нашёл как выйти на контору (в Китае), написал им. Через пару дней пришёл ответ. А там мало того что за бабки, так они как в банке: ты сперва нарисуй что вообще за проект, какая моя выгода, какая партия.. Даже отвечать не стал, выбросил в урну. По этому, лучше за бОльшие деньги, но получить изделие по прописному стандарту, чем бегать потом за ними и клянчить разъяснения.
@Al.Sy.
@Al.Sy. Месяц назад
Очень странно, что на Toolchain RISC-V ругался Kaspersky Security Cloud, обнаружив вредоносы. На Virustotal много антивирусов так же среагировали.
@abelyarlindsey8386
@abelyarlindsey8386 Месяц назад
29:30 @echo off
@Alexander_Gurov_RF
@Alexander_Gurov_RF Месяц назад
Конечно, у classic risc based архитектур очень хорошая обратная совместивость с более низкой разрядностью. Но запускать чисто 32-х битный код на 64-битной архитектуре так себе идея. Хотя работать будет. Да и для начала стоит использовать именно rv32. Так как её хватит за глаза, и для embedded она очень популярна.
@Alexander_Gurov_RF
@Alexander_Gurov_RF Месяц назад
beqz -- это псевдоинструкция на risc-v. Но таковая присутствовала в mips. Видимо, данный дизассемблер не отображает инструкции как есть (возможно, есть какие то настройки). У objdump есть соответствующая опция. -Mno-aliases. The following RISC-V-specific disassembler options are supported for use with the -M switch (multiple options should be separated by commas): numeric Print numeric register names, rather than ABI names. no-aliases Disassemble only into canonical instructions, rather than into pseudoinstructions.
@user-ep4rn9zh9g
@user-ep4rn9zh9g Месяц назад
17:55 То есть, UTF-8 нужно как-то отдельно реализовывать? Можете объяснить? Или будете рассматривать это в будущем? Сам я забросил ассемблер еще лет 27 назад. Забыл уже все.
@CityAceE
@CityAceE Месяц назад
Символы юникода могут кодироваться от одного до четырьмя байтами. Причём буквы латинского алфавита кодируются одним байтом, так что для них разницы между кодировкой ASCII нет. А вот спец.символы и кириллица - это другое дело. Для них нужен особый подход. Но и он тоже может быть реализован в терминале.
@user-ep4rn9zh9g
@user-ep4rn9zh9g Месяц назад
@@CityAceE Спасибо! Просто я думал, что в более современных процессорах стоило бы реализовать это уже, как минимум, на уровне микрокода. Хотя бы для двухбайтовых символов.
@Alan-12345
@Alan-12345 Месяц назад
А нельзя ли заменить j loop на что-то типа bneq (t1), zero, loop?
@CityAceE
@CityAceE Месяц назад
Команда Branch Not Equal записывается, как bne, а не как bneq. И, к сожалению, косвенную адресацию (t1) в подобного рода командах использоваться нельзя. Но ход мыслей очень правильный! 👍
@Alan-12345
@Alan-12345 Месяц назад
@@CityAceEПонял, спасибо!
@dkalmykov
@dkalmykov Месяц назад
А можно сюда адрес фреймбуфера огласить? И с какими ключами qemu-system-riscv64 запускать? Не могу терпеть, хочу сам попробовать продожить, по аналогии с уроками по ARM :^)
@CityAceE
@CityAceE Месяц назад
Чтобы получить адрес фреймбуфера необходимо произвести длинную цепочку инициализации PCI-шины, VGA-адаптера и других действий. Так что не всё так просто, к сожалению.
@XpIOHdeJIb3000
@XpIOHdeJIb3000 Месяц назад
к слову в кавычках " " должно автоматом дописываться 0. .byte 0x00 - это уже лишнее.
@CityAceE
@CityAceE Месяц назад
Ах, так вот откуда лишний байт нулей взялся! Я на знал, что ассемблер GNU C после кавычек автоматически добавляет дополнительный байт нулей. Спасибо за эту информацию! 👍
@Alexander_Gurov_RF
@Alexander_Gurov_RF Месяц назад
Для строк можно использовать директиву .asciiz, тогда завершающий 0 добавится автоматически.
@Al.Sy.
@Al.Sy. Месяц назад
Со времён ДВК. 😊
@AvitoB0T
@AvitoB0T Месяц назад
KolibriOS собрать для RISC-V
@CityAceE
@CityAceE Месяц назад
KolibriOS гвоздями прибита к архитектуре Intel x86, так как написана на местном ассемблере. Собрать её под что-то другое не получится никак - только переписать с нуля.
@AvitoB0T
@AvitoB0T Месяц назад
@@CityAceE ну я про это 🙂 Когда уже искусственный интеллект научится писать операционную систему с нуля по другую архитектуру
@alexloktionoff6833
@alexloktionoff6833 Месяц назад
Изучение ассемблера RISCV - хорошее вложение для эмбедеров, микроконтроллеров понаделают кому не лень, вряд ли он умрет.
@Al.Sy.
@Al.Sy. Месяц назад
Уже делают. В России НИИЭТ сделал, в продаже уже есть.
@alexloktionoff6833
@alexloktionoff6833 Месяц назад
@@Al.Sy.Китай штампует RISCV микроконтроллеры по 10 центов давно
@user-qp5sf7ik8i
@user-qp5sf7ik8i Месяц назад
А можно получить плагин для notepad?
@CityAceE
@CityAceE Месяц назад
Вот, например: github.com/aidandempsey/riscv_npp А цвета можно подкрутить по вкусу, зайдя в настройки.
@user-wv5wj7sz2e
@user-wv5wj7sz2e Месяц назад
Risc-v всё ещё 32-х битный или уже изобрили 64-х битную версию
@CityAceE
@CityAceE Месяц назад
Если посмотреть более внимательно, то и компилятор, и эмулятор в этом примере используются именно 64-х битные, хотя сам код написал для 32-х бит. Но на это у меня были причины.
@user-bp3hg9fu5t
@user-bp3hg9fu5t Месяц назад
Хорошо. Но можно уже и менее разжёвывать. 8080 неинтересен - устарел имхо
@CityAceE
@CityAceE Месяц назад
Разжёвываю подробно для новых зрителей, коих на этих роликах большинство. А для тех, кто смотрел предыдущие видео, можно было и половины не повторять.
@PavelLaminar
@PavelLaminar Месяц назад
На мой взгляд надо было хоть немного раскрыть тему сегментации памяти в противном случае для новичков вряд ли будет понятно что за .text что за магический 0х800000000
@CityAceE
@CityAceE Месяц назад
Ну так-то да, но я стараюсь всё-таки объяснять то, без чего нельзя обойтись на данном конкретном этапе. И, по моему скоромному мнению, до сегментации памяти можно не добраться ещё довольно долгое время 😉Я ведь даже про регистры ничего не рассказал и про другие важные вещи типа прерываний. Да и про потоки умолчал, просто под шумок задействовав одноядерный процессор. В общем, чем меньше сразу грузить людей всякими нюансами, там больше шансов, что они не разбегутся после первого же ролика. Но я могу быть и не прав 🤷‍♂️
@PavelLaminar
@PavelLaminar Месяц назад
@@CityAceE Про регистры как раз таки было сказано ) и самое главное минимально и достаточно чтобы с одной стороны сказать что они есть и с другой не перегрузить. Про память примерно в таком же ключе - было бы идеально. В любом случае серию по ассемблеру всячески поддерживаю и слежу. 👍
@user-pn5xz2uu5w
@user-pn5xz2uu5w 18 часов назад
Ой-ой-ой, к логопеду, срочно!!!
@CityAceE
@CityAceE 18 часов назад
Был я у него. Поздно, говорят...
@user-pn5xz2uu5w
@user-pn5xz2uu5w 17 часов назад
@@CityAceE в Советскую эпоху это успешно делали в детском саду. В либерал-капиталистическое время всем на все похрен, кроме денег.
Далее
Tutorial JavaScript - 8 "Console Part 1"
10:00
RISC-V isn't killing Arm (yet)
9:05
Просмотров 327 тыс.
Обзор Lichee RV Dock (RISC-V)
27:33
Просмотров 810
Российские процессоры
19:07
Просмотров 11 тыс.
БЕДНЫЙ БОБИК
0:20
Просмотров 3,4 млн