приходите в гости, похоже мы заняты одним и тем же :-)
кстати для арм ассемблера у меня уже есть редактор, и я думаю вы много там найдете полезного (коль пишите (писали) на асме - то знаете все грабли которые обычно в этом процессе поджидают)
поставил вам плюса, но они не помогут, здесь за асм хейтят (больше всего те кто в асме нифига не понимают :-) последний пример в конце комментариев к моей последней статье)
где вы здесь видели технологический ресурс ?!! на хабре уже давно больше всего лайков набирают переводные статьи как чел при помощи отвертки смог разобрать батарею теслы и заменить один ее элемент :-)
или те же статьи от HR которые рассказывают какие задачки (одна дибильнее другой) они задают на собеседованиях...
и так далее...
так что забудьте уже про "технологический ресурс".. уж лет 5 как нет... посмотрите блок справа
ну вот как раз представление инструкций в виде некоего псевдокода и позволит реализовать сворачивание асм кода...
запланировано что в редакторе всегда будет возможность увидеть сгенерированный асм код.. то есть это нечто недоступное, только в листингах, а наоборот - редактируемый код при необходимости
ну это пока вы программируете в рамках одной архитектуры.. и ваши инструкции не слишком сложны (посмотрите арм-ассемблер, а потом risc-v ассемблер - они как антиподы :-) у одного много различных сложных инструкций, а у второго - вроде все инструкции простые - но тоже свой синктаксис и мнемоники....)
смысл в том чтобы создать одинаковые мнемоники плюс минус для разных архитектур...
ну и насколько возможно сделать суррогатный микрокод для эмуляции тех инструкций которых нет на одной из архитектур..
про размер инструкции - в арме это зачастую так просто не работает (есть тумб2 формат - а это 16 бит вместо 32ух.. и есть еще выравнивание.)...
тоже самое и про число тактов - для этого есть DWT и там все бывает очень интересно в зависимости от того какое выравнивание у инструкции, и проще по DWT определять реальные цифры чем пытаться высчитать..
да и сейчас наверное все новые архитектуры умеют работать с вложенными приоритетными прерываниями ..
ну все немного не так как вы пишите.. поверьте, у себя в группе мы дизассемблировали сишные программы... оверкода там дофига
но на каких то алгоритмических фрагментах - си компилирует так как это сделал бы человек на асме, это действительно так...
например, неоднократно видели когда си применяет при работе с битовыми полями and\or хотя есть например BFI... возможно это из за того что на cortex-m0 просто нет bfi в системе команд... но в cortex-m3 \ cortex-m4 все равно используется and\or...
1) зачем введено такое понятие, почему нельзя иметь сквозную нумерацию регистров, а компилятор сам распределит где виртуальные, а где нет?
ну просто подразумевается что виртуальный регистр это некоторая именованная ячейка в памяти.. значение которой м.б. использовано в выражениях...
для ассемблера гонять регистры на стек\со стека - реально не всегда удобно при отладке :-( да и с точки зрения быстродействия выгоды не столь очевидны (а иногда и просто нет)
2) вы уверены, что итоговый код, когда значения виртуальных регистров будут летать туда-сюда в память (у нас ситуация что физических регистров меньше виртуальных, значит мы должны их хранить в кеше) будет оптимальней скомпилированного сишного кода, где компилятор оптимизирован под реальное количество регистров. Я когда-то смотрел скомпилированный код под MSP процессор и реально офигел, что он был довольно нетривиальным, т.е. не такой линейный как я ожидал
ну уверен может быть только Господь, а над нашими планами он потом посмеется.. но попробовать считаю возможным....
ух ты !!! есть ссыль как это работает ? мне это очень интересно !!
ну в сублиме только подсветка токенов есть... контекст не разбирается
приходите в гости, похоже мы заняты одним и тем же :-)
кстати для арм ассемблера у меня уже есть редактор, и я думаю вы много там найдете полезного (коль пишите (писали) на асме - то знаете все грабли которые обычно в этом процессе поджидают)
https://t.me/ArmAsmEditor
поставил вам плюса, но они не помогут, здесь за асм хейтят (больше всего те кто в асме нифига не понимают :-) последний пример в конце комментариев к моей последней статье)
приходите в гости, первые наметки языка уже начали вырисовываться.. может быть вам будет интересно
и вопрос про ваше знание ассемблера остался - так на что заменить этот говнокод ?
я отвечал на ваш вопрос про то какой код генерит компилятор си...
и поверьте - оптимизации включены
ну если вы улучшить не можете - возможно вы просто не знаете ассемблера... вот и все... и компилятор си тут не при чем :-)
если в коде выше вы не можете ничего улучшить - то без комментариев...
потому что кто хоть немного знает - он бы из 4 инструкций оставил 2, если хорошо знает ОДНУ инструкцию !!!!
и это на каких то 4х строчках кода.... 4 байта как минимум экономии и минимум 2 такта исполнения
p.s. это из под куба
где вы здесь видели технологический ресурс ?!! на хабре уже давно больше всего лайков набирают переводные статьи как чел при помощи отвертки смог разобрать батарею теслы и заменить один ее элемент :-)
или те же статьи от HR которые рассказывают какие задачки (одна дибильнее другой) они задают на собеседованиях...
и так далее...
так что забудьте уже про "технологический ресурс".. уж лет 5 как нет... посмотрите блок справа
GPT-4: Чему научилась новая нейросеть, и почему это немного жутковато
9.5K50+50
Может ли GPT-4 на самом деле писать код?
2.7K2+2
Сотрудник техподдержки Microsoft активировал Windows 10 на ПК клиента с помощью пиратского кряка
41K116+116
GPT-4 создала за несколько десятков секунд по короткому ТЗ рабочую версию Pong, Asteroids, Breakout и Pac-Man
6.5K25+25
Брутальный маркетплейс. Разбираем суть цифровых платформ на примере забастовки против Wildberries
15K107+107
На удалёнке в среднем платят больше. Зарплаты в Москве выше, чем при релокейте. Исследование"
вот и вся техника :-) ага... без хайпа не техничит :-)
у меня пока идет проработка языка..
а что за преимущества в куче регистров вы выделяете ? не дергать постоянно память если данные можно хранить в регистрах ?
так вроде нет препятствий
а про С-- где посмотреть ? гугл только про си выдает результаты и си++.. :-(
ну вот как раз представление инструкций в виде некоего псевдокода и позволит реализовать сворачивание асм кода...
запланировано что в редакторе всегда будет возможность увидеть сгенерированный асм код.. то есть это нечто недоступное, только в листингах, а наоборот - редактируемый код при необходимости
то есть от асма я отходить не хочу...
ну это пока вы программируете в рамках одной архитектуры.. и ваши инструкции не слишком сложны (посмотрите арм-ассемблер, а потом risc-v ассемблер - они как антиподы :-) у одного много различных сложных инструкций, а у второго - вроде все инструкции простые - но тоже свой синктаксис и мнемоники....)
смысл в том чтобы создать одинаковые мнемоники плюс минус для разных архитектур...
ну и насколько возможно сделать суррогатный микрокод для эмуляции тех инструкций которых нет на одной из архитектур..
про размер инструкции - в арме это зачастую так просто не работает (есть тумб2 формат - а это 16 бит вместо 32ух.. и есть еще выравнивание.)...
тоже самое и про число тактов - для этого есть DWT и там все бывает очень интересно в зависимости от того какое выравнивание у инструкции, и проще по DWT определять реальные цифры чем пытаться высчитать..
да и сейчас наверное все новые архитектуры умеют работать с вложенными приоритетными прерываниями ..
спасибо..
ну все немного не так как вы пишите.. поверьте, у себя в группе мы дизассемблировали сишные программы... оверкода там дофига
но на каких то алгоритмических фрагментах - си компилирует так как это сделал бы человек на асме, это действительно так...
например, неоднократно видели когда си применяет при работе с битовыми полями and\or хотя есть например BFI... возможно это из за того что на cortex-m0 просто нет bfi в системе команд... но в cortex-m3 \ cortex-m4 все равно используется and\or...
да, плюс к этому программу на асме когда идет активная работа по сохранению всего подряд на стек очень тяжко отлаживать именно как асм программу...
кто то отминусил... поставил два плюса (в статью и карму)...
ну просто подразумевается что виртуальный регистр это некоторая именованная ячейка в памяти.. значение которой м.б. использовано в выражениях...
для ассемблера гонять регистры на стек\со стека - реально не всегда удобно при отладке :-( да и с точки зрения быстродействия выгоды не столь очевидны (а иногда и просто нет)
ну уверен может быть только Господь, а над нашими планами он потом посмеется.. но попробовать считаю возможным....
И? открывайте плейлист ! GNU ARM ASM EDITOR
можно просто в ютубе в поиске набрать ArmAsmEdit и там найти любое видео, и там в подсказках будет ссылка на весь плейлист и на следующее видео
не открывается ссылка на ютуб ? гм...