0 / 0 / 0
Регистрация: 30.06.2018
Сообщений: 31
|
|
1 | |
Есть ли смысл учить ассемблер для написания ОС для ARM?25.11.2020, 10:50. Показов 5079. Ответов 59
Извините, если не в ту тему, не знал куда еще. Вопрос такой: я хотел бы попробовать себя в низкоуровневом программировании, а точнее, появилась странная (наверно) идея написать подобие ОС. Стоит ли учить для этого ассемблер, или хватит просто знаний C (у меня их сейчас нет)? И посоветуйте что еще для этого можно поизучать? Нашел несколько книг по изучению работы операционных систем (Modern Oeration System, H.Bos), пару статей. Стоит ли этим заниматься? К слову, сейчас у меня небольшой опыт в разработке на ASP.Net
0
|
25.11.2020, 10:50 | |
Ответы с готовыми решениями:
59
Есть ли смысл изучать ассемблер для x86 в 2021 году? Что учить для написания расширения для хрома? Какую математику нужно учить для написания криптографического ПО? Есть ли смысл учить C++? Что учить для написания серверной части под Android |
01.02.2021, 19:01 | 21 |
Написаны велосипеды!
Из того, что нет в vscode -
Ещё есть Eclipse с плагином для GNU ARM. Там даже лучше по части отладки, чем в vscode. Но сама среда тормозная, т.к. написана на Java. Если чего не хватает - пишут расширения. Их уже тысячи. Документация. Люди справляются как-то. Это для вас копья, потому что пишете велосипед. А можно было взять готовое расширение по подсветке и посмотреть, как оно там работает. Лучше освоить то средство, на котором будет быстрее. Вам для vscode надо было бы написать лишь
0
|
01.02.2021, 19:13 | 22 |
если бы вы все таки смотрели что осуждаете - это было бы интересно...
а так, глубину поставленной задачи вы до сих пор не поняли... пишите сами для vscode, я не готов... в том числе и из-за языкового барьера... ну и из за того о чем писал выше...
0
|
01.02.2021, 19:41 | 23 |
Я лишь говорю, что вы тратите своё время неэффективно. А могли бы сделать средство, нужное другим ассемблерщикам.
Cortex-Debug вон кому вообще нужен, когда есть Keil, IAR и т.п.? А ведь пользуются: Ну... Увы.
0
|
4013 / 2560 / 429
Регистрация: 09.09.2017
Сообщений: 11,403
|
|
01.02.2021, 19:56 | 24 |
На чистом асме под ARM не пишут. Да даже если бы и писали - для модульной разработки так и так придется вырабатывать стандарт стыковки объектников. Так почему не Си-шный?
Ваша среда интересна только вам. Тестировать, да даже смотреть ваши видюшки, будут только из любопытства. Кстати, у меня его недостаточно, то есть ни их смотреть мысли не возникло, ни тем более скачивать вашу программу. На практике она бесполезна, поскольку есть куда более распространенные решения. Ваш проект полезен лично вам для освоения программирования для ПК и изучения средств отладки МК. Тут пожалуйста, посоветовать готовы. А она вообще есть? Я-то рассматриваю ваш проект как тестовый полигон для изучения вами соответствующих технологий. Так что не обольщайтсь, пользоваться этим никто не будет, вы впустую потратили время на запись роликов.
0
|
02.02.2021, 17:20 | 30 |
хочу, но я реально понимаю что на сложных проектах не осваивают..
тем более на проекте который еще не до конца осмыслен и описан... одно дело переносить и усовершенствовать проект который уже хотя бы оформлен алгоритмически, и другое когда ни языка не знаешь, ни того что хочешь... да еще это помножить на необходимость писать расширение для чужого редактора с мутно понятной документацией (из за языкового барьера)... для меня это очевидно, а для вас ? ну я же писал - в первую очередь пишу редактор для себя... а на счет остальных - я вообще не встречал тех кто на асме пишет (больше чем инлайном)... так что особо тут горевать не о чем... если бы такой человек нашелся - конечно работа пошла бы быстрее, но коль нет - значит будет идти чуть медленнее, это не самое страшное в хоббийной разработке
0
|
4013 / 2560 / 429
Регистрация: 09.09.2017
Сообщений: 11,403
|
|
02.02.2021, 17:30 | 32 |
И поэтому вы хотите заставить всех окружающих учить вашу среду?
Сильно сомневаюсь что ваш проект объективно сложный. Субъективно - запросто. А на счет сложности освоения: на чем еще осваивать как не на учебных проектах? А сами собираетесь активно писать на чистом асме? Если да, то подумайте почему другие так не делают. Если нет, то оцените перспективы своей среды. Ну как пропадет. Человек опыт получит, а большего и не требуется.
0
|
02.02.2021, 19:56 | 33 |
Почему пропадет ?
если бы я не написал то что написал - я бы даже не представлял себе сложность задачи... один разбор команд чего стоит.. текст правил разбора в исполняемый байткод преобразую, иначе не хватало быстродействия, а так 6000 строк обрабатывается почти мгновенно... и это только одна из подзадач Добавлено через 1 минуту ну заставить -это слишком категорично :-) хотя, какая разница какую среду учить... кокос, кейл, иар, все одно учим.. а у меня и учить нечего по сравнению с ними :-) Добавлено через 29 секунд я тоже так думал... пока файлы по 6000 строк не начал обрабатывать :-))) а может я так плох, тоже может быть... в конце концов когда вы писали про опыт - вы на 1000% правы... Добавлено через 3 минуты да, я на нем и пишу.. потому и пришел к тому что в существующих средах на асме писать это пытка... другие не делают потому что банально нет среды, а без среды писать на асме очень и очень трудоемко... опять таки отсутствие библиотек, если бы для си небыло HALa то на cmsis писать было бы так же сложно..
0
|
02.02.2021, 20:08 | 34 |
Другие не делают, потому что
0
|
4013 / 2560 / 429
Регистрация: 09.09.2017
Сообщений: 11,403
|
||||||
02.02.2021, 20:38 | 35 | |||||
Распространенные среды могут и потом пригодиться. В смысле в профессиональной деятельности, а не хелло-ворлды писать. Опять же подумайте о поддержке: не лень будет постоянно обновлять свой продукт?
Ага, натыкался когда-то на разбор почему может быть сложно написать текстовый редактор, даже без подсветки и всего такого. В общем, одна из важнейших проблем - юзер добавляет текст куда угодно, а значит если хранить весь файл единым массивом, то придется постоянно его туда-сюда двигать. Вроде бы там предлагали хранить в виде списка или массива массивов чтобы двигать пришлось только в пределах кусочка. Сейчас не найду где я это видел. На Хабре наверное. Сдается мне, что-то не так с подходом. 6000 строк для одного файла это перебор. Ну 300, ну даже 1000 еще подъемно. Но не 6000. Не угадали. На Асме не пишут потому что слишком трудоемко и слишком низкий уровень. Приходится больше изображать машинистку а также заниматься регистр-менеджментом, чем думать об алгоритме. Плюс код на Си лишь немного уступает ассемблерному в производительности, а иногда и обгоняет. Плюс контроль ошибок: в Си есть типы данных, массивы, структуры, все поименованные. В Ассемблере же максимум переменные элементарных типов, а дальше прямая работа с памятью. Ради любопытства реализуйте на ассемблере такую простую вещь, как проход по связному списку. Без создания, без выделения памяти, только проход. Что-то в этом роде:
Ну не знаю. Как по мне, HAL гораздо сложнее. Собственно, я им и не пользуюсь - хватает работы на регистрах.
0
|
02.02.2021, 23:26 | 36 |
и это тоже... а если еще это не просто текст а с различными токенами и синтаксисом то становится совсем весело... :-) хотя выход известен - указатели.. без них никак.. особенно интересно когда надо делать undo/redo - просто так хранить реплику текста нельзя (при движении undo/redo придется перепарсивать все заново, и так появляются инкрементальные обновления текста, с хранением указателей на изменившиеся строки и указателем какое изменение было... гы-гы.. просто песня)
да ну ? откройте файл определений своей среды :-)) 6000 строк было получено из кокоса например, сейчас как раз меняю подход и делаю файлы немного по другому (в разбивке по устройствам), и с иерархией символов (потому что иметь кучу символов бестолку если нет нормальной навигации по ним), пока получается... причем дерево символов строится именно для того асм файла который редактируется... ну в общем много чего навертеть пришлось ну тогда от асма далеко не ушли... меня как раз больше эта строгая типизация в си напрягает... причем все эти стандарты си почему то зачастую очень выборочные для производителей сред... то что проходит в каком нить avr studio по синтаксису не применимо в кокосе... писал как то меню вложенное, так натра.ался с описанием пунктов меню указывающих друг на друга... это на авр.. потом начал переносить в кокос - и опять трах... понятно что всему можно научится, но блин, разговоры о стандартах си я после этого воспринимаю исключительно с улыбкой а может наоборот, действительно на асме приходится думать об алгоритме больше чем в си ? :-) регистров то не так много :-) а на счет машинистки - вот мы уже доходим до понимания того что те функции которые дают распространенные среды - для асма мягко говоря не подходят зачастую. (как бы это не было странно)... и так появляется рутина... видео вы не смотрели, поэтому тут можно не продолжать.. ну я и на си не понимаю что автор имел ввиду.. но у меня просто опыта в си мало... так что спишем на мою неграмотность :-) Добавлено через 5 минут платформо независимость я прочувствовал с переходом от cortex-m3 на cortex-m4, прямо вот с gpio и начал чувствовать :-)) хотя если плотно сесть на hal наверное части граблей можно избежать...
0
|
1978 / 1276 / 131
Регистрация: 04.01.2010
Сообщений: 4,607
|
|
02.02.2021, 23:31 | 37 |
И кстати, надо будет попробовать. Совершенно недавно было (с Вами даже, вроде бы) обсуждение о дебаге в VS Code кортексов. Вы (или кто-то еще) давали настройку связи с GDB, но проблема на моей стороне оказалась в наличии лишь STLink v3, и отсутствия JTAG'а на плате. В итоге мне так и не удалось все это завести - тула со стороны VS Code никак не хотела правильно управлять GDB, и ничего не получалось. Но, возможно с этой тулой будет иначе. Попробую - отпишусь
0
|
4013 / 2560 / 429
Регистрация: 09.09.2017
Сообщений: 11,403
|
|
03.02.2021, 00:42 | 38 |
В ассемблере синтаксиса особого нет, для ЯВУ было бы куда хуже. А так - делим по строкам и никаких проблем.
Там да, накручено. Основная проблема с PROGMEM, в то время не умели по-человечески описывать с точки зрения стандарта Си. Ну и сама особенность AVR что оперативка и флеш расположены в разных адресных пространствах, в ARM с этим проще. А стоило отнестись серьезно. Перечитайте мое сообщение. На асме приходится думать не об алгоритме, а о его реализации на конкретном железе. Это свойство языка. Вы можете завораивать это в макросы, конфигураторы или различные копипасты. Получите слабое подобие нормального языка высокого уровня, потому что нет оптимизатора, нет проверок и других удобных плюшек. Про кроссплатформенность вообще молчу. На Си придется переписывать лишь малую платформозависимую часть, на асме - все. Вот написал я когда-то для stm32f103 (arm) демку, рисующую трехмерную графику. А потом захотел потыкать палочкой gd32vf103 (risc-v). Так вот, портирование заняло очень мало времени. В основном на то чтобы разобраться как на контроллере с принципиально другой архитектурой работать с периферией. Ну разумеется, не смотрел. Как будто вы ожидали другого... А, я забыл что вы на Паскале пишете. Если не забуду, переведу на него. Хм, а у меня особы проблем не было ни F103 -> L151 (там по-разному устроено), ни даже ->VF103 (вообще risc-v). Ну то есть макросы переписать пришлось, конечно, но сам код не изменился. На любителя. Я все же предпочитаю более простой подход, без ненужных абстракций над абстракциями.
0
|
03.02.2021, 00:53 | 39 |
ну если метки не обрабатывать то да... и команды не разбирать... в общем если делать просто текстовый редактор с подсветкой токенов по маске не задумываясь о том что же все таки за команда написана...
0
|
4013 / 2560 / 429
Регистрация: 09.09.2017
Сообщений: 11,403
|
||||||
03.02.2021, 01:08 | 40 | |||||
Как-то так.
0
|
03.02.2021, 01:08 | |
03.02.2021, 01:08 | |
Помогаю со студенческими работами здесь
40
Есть ли смысл учить XNA? Есть ли смысл самостоятельно учить C++? Есть ли смысл сейчас начинать учить Си? Есть ли смысл учить чистый ASP.Net Есть смысл в темах, какой язык программирования учить в текущем году? Подскажите пожалуйста, есть ли смысл учить jQuery, а затем уже React.js? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |