Офигенный выпуск, даже не знал что можно напрямую _start из си писать, ждем продолжения, тема очень интересная👍 Есть интересная идея выпускать про программирование ядра на си с ассемблерными вставками, но будет ли это интересно остальным так же как мне - уже другой вопрос)
крутой урок, спасибо! как уже написали в комментариях, было бы здорово разобрать реальные примеры. в лоб замерить работу алгоритма без и с ассемблерными вставками.
Это очень хорошо! Отдельное спасибо за CC лицензию. Думаю, что сценарий таких роликов можно-бы прикладывать к самому ролику, в описание, равно как и перечень литературы, и других источников. Получится полноценный учебный мини-модуль. P.S. Хотел-бы промолчать, благоговенно, Но алгоритмы продвижения, Желают комментариев и слов, Пустых совсем - я не хотел-бы лить P.P.S. ещё, я думаю, что на такой объем, уже таймкоды нужно сделать будет. Когда-то..
после паскаля, ассемблерная вставка на Си, выглядит и тяжело и смешно. Особенно для тех, кто программировал и программирует на ассемблере. На Паскале мы просто вставляем код ассемблера как есть, подменяя где надо регистры переменными Паскаля. Здесь же мы делаем бессмысленную работу: ставим кавычки, ставим знак переноса, дополняем код Си-шными переменными, для того чтоб они вставились в код... Зачем? Если для ассемблера можно было использовать все те же переносы и те же комментарии что используются в Си. Да и переменные можно было напрямую указать.
И всё таки, в чем главное преимущество таких вставок перед целыми отдельными модулями на asm? Писать огромными блоками в Сишном коде на ассемблере нет особого смысла. А от мелких вставок оптимизация будет не значительна в больших проектах.
Для некоторых низкоуровневых функций нет готовых команд или библиотек и приходится выполнять их на ассемблере. Например переключить режим процессора записав единственный регистр. Читал про ядро кортекс -- там полно таких действий было.
Моя личная проблема: я пишу библиотеку на с++ и в ней я не могу использовать никаких других библиотек. У меня реализованы алгоритмы рандомизатора в библиотеке и мне нужно передать текущее системное время. Как мне это сделать без использования библиотек? В с++ нет такого функционала. Нужно самостоятельно реализовать алгоритм на ассемблере. Или мой другой проект, который я хочу реализовать - мой собственный аналог библиотеки ввода вывода. Там тоже никуда без ассемблера. Вывод: при разработке не программ, а библиотек это даже очень важный функционал. Я даже больше скажу: бОльшая часть базовых с++ библиотек написана не на самом с++, а на ассемблере. Также при написании проектов на других языках может потребоваться написать библиотеку на с++ для проекта, где также важно будет писать код на ассемблере.
06:20 "может показаться немного сложно" - для человека который не писал "низкоуровневых" языках это вообще супер сложно. Я почти ничего не понял. Спасибо за видео. Такой контент классный, но на нём много просмотров не собрать. Надеюсь хватит мотивации не забрасывать это дело.
Хочу предложить тему - cps на языке Си, или передача продолжения, на Ютубе по этой теме всего 1 ролик и то, там пайтон и js, да и в интернете не так много статей по этому поводу. Лично мне было бы интересно послушать.
Никак. Когда переходите на асм - это автоматически означает привязывание к конкретной архитектуре, даже x86 и x64 в этом случае это разные архитектуры, об этом, кстати, Соер говорил.
давай про тоже самое, только в рамках чтения памяти другого процесса :) Поближе к читам. Там больше аудитория будет :) Да и молодёжь подтянешь. Благое дело.... :)
Намудрили они с эттими процентами, модификаторами, кавычками и скобочками. Насколько я помню, Борланд С++ версии 3.0 компилил конструкции вида: asm { mov ax, 50 mov bx, 20 add ax, bx ... ... } И вроде как переменные можно было напрямую туда писать, без процентов и дальнейших перечислений ниже с модификаторами. Ну это давно было, в 98 году я Борландом тем компилил свои первые программы на С и С++.
Соер, пожалуйста, объясни в следующем уроке по ассемблерным вставкам, как работать с системными переменными. Например, как вытащить системное время при помощи ассемлерной вставки. Просто не всегда есть возможность использовать библиотеки.
Думаю про запуск бинарника из запущенного процесса тоже может быть интересной. ru-vid.com/video/%D0%B2%D0%B8%D0%B4%D0%B5%D0%BE-fQnffaiwsR8.html Но, тема про размещение в памяти затронута вскользь. Было бы интересно её развитие
Автор, ты хоть дай людям инфу, где можно применять такие вставки. Только когда будешь давать примеры не забудь про нативную память и совместное использование такой памяти, а то ведь тебя насмотрятся и кинутся реализовывать