Как вставить ASM в Си (inline asm)

  Рет қаралды 19,987

S0ER

S0ER

2 жыл бұрын

#soer #itubeteam
Основной канал для общения и публикации новых видео - Телегарм - t.me/softwareengineervlog
Спонсорство - donate.s0er.ru
Сайт платным контентом - soer.pro
Зеркало для видео Дзен Видео - zen.yandex.ru/id/5f578bdf22e2...
GitHub - github.com/soerdev
Чат для программистов - / discord
Группа ВК - codeartblog

Пікірлер: 48
@konstantinbondarenko5235
@konstantinbondarenko5235 2 жыл бұрын
Спасибо за Ваш труд. Жду больше выпусков про ассемблер.
@user-jl8qr3qc6z
@user-jl8qr3qc6z 2 жыл бұрын
Офигенный выпуск, даже не знал что можно напрямую _start из си писать, ждем продолжения, тема очень интересная👍 Есть интересная идея выпускать про программирование ядра на си с ассемблерными вставками, но будет ли это интересно остальным так же как мне - уже другой вопрос)
@user-pk4hz2qt3b
@user-pk4hz2qt3b 2 жыл бұрын
Вот чего у тебя не отнимешь, дак это того, что ты весьма понятно объясняешь. Реально всё понятно становится.
@ligecss1928
@ligecss1928 Жыл бұрын
Очень интересно. Жду следущих видео с подобной тематикой))
@soltaurus
@soltaurus 2 жыл бұрын
Отличная тема, спасибо!
@valbv
@valbv 2 жыл бұрын
Интересно! Даёшь больше видосов с компиляцией, сборкой из исходников и ковыяниями под капотом =)
@user-sz3fo3yc7g
@user-sz3fo3yc7g Жыл бұрын
Хорошо! Давай ещё, контент в кайф!
@extseme3464
@extseme3464 2 жыл бұрын
крутой урок, спасибо! как уже написали в комментариях, было бы здорово разобрать реальные примеры. в лоб замерить работу алгоритма без и с ассемблерными вставками.
@user-ur1ov6hw6f
@user-ur1ov6hw6f 10 ай бұрын
Хотел лайк поставить, но он неожиданно снялся. Оказалось, уже я это смотрел и поставил лайк раньше)) Помогла информация про модификаторы.
@dalluzz
@dalluzz 2 жыл бұрын
Одобряю контент
@Eustrop
@Eustrop 2 жыл бұрын
Это очень хорошо! Отдельное спасибо за CC лицензию. Думаю, что сценарий таких роликов можно-бы прикладывать к самому ролику, в описание, равно как и перечень литературы, и других источников. Получится полноценный учебный мини-модуль. P.S. Хотел-бы промолчать, благоговенно, Но алгоритмы продвижения, Желают комментариев и слов, Пустых совсем - я не хотел-бы лить P.P.S. ещё, я думаю, что на такой объем, уже таймкоды нужно сделать будет. Когда-то..
@xx-hq4rb
@xx-hq4rb 2 жыл бұрын
О, это интересно.
@qu11t62
@qu11t62 2 жыл бұрын
о, только недавно задался вопросом, как вставки в си сделать на gcc. спасибо большое
@sergshutk2757
@sergshutk2757 Жыл бұрын
после паскаля, ассемблерная вставка на Си, выглядит и тяжело и смешно. Особенно для тех, кто программировал и программирует на ассемблере. На Паскале мы просто вставляем код ассемблера как есть, подменяя где надо регистры переменными Паскаля. Здесь же мы делаем бессмысленную работу: ставим кавычки, ставим знак переноса, дополняем код Си-шными переменными, для того чтоб они вставились в код... Зачем? Если для ассемблера можно было использовать все те же переносы и те же комментарии что используются в Си. Да и переменные можно было напрямую указать.
@user-nt1re9ym4i
@user-nt1re9ym4i 2 жыл бұрын
Хочу предложить тему - cps на языке Си, или передача продолжения, на Ютубе по этой теме всего 1 ролик и то, там пайтон и js, да и в интернете не так много статей по этому поводу. Лично мне было бы интересно послушать.
@user-ft6zh8ny9i
@user-ft6zh8ny9i 2 жыл бұрын
Спасибо. А в какой программе вы это компилируете?
@vovanchik_ru4208
@vovanchik_ru4208 2 жыл бұрын
давай про тоже самое, только в рамках чтения памяти другого процесса :) Поближе к читам. Там больше аудитория будет :) Да и молодёжь подтянешь. Благое дело.... :)
@DonEstorsky
@DonEstorsky 2 жыл бұрын
так я не понял, а зачем тогда такие инструкции как ".intel_syntax noprefix " нужны?
@alexeygreen4073
@alexeygreen4073 2 жыл бұрын
И всё таки, в чем главное преимущество таких вставок перед целыми отдельными модулями на asm? Писать огромными блоками в Сишном коде на ассемблере нет особого смысла. А от мелких вставок оптимизация будет не значительна в больших проектах.
@DonEstorsky
@DonEstorsky 2 жыл бұрын
Для некоторых низкоуровневых функций нет готовых команд или библиотек и приходится выполнять их на ассемблере. Например переключить режим процессора записав единственный регистр. Читал про ядро кортекс -- там полно таких действий было.
@nakamasama
@nakamasama 2 жыл бұрын
Моя личная проблема: я пишу библиотеку на с++ и в ней я не могу использовать никаких других библиотек. У меня реализованы алгоритмы рандомизатора в библиотеке и мне нужно передать текущее системное время. Как мне это сделать без использования библиотек? В с++ нет такого функционала. Нужно самостоятельно реализовать алгоритм на ассемблере. Или мой другой проект, который я хочу реализовать - мой собственный аналог библиотеки ввода вывода. Там тоже никуда без ассемблера. Вывод: при разработке не программ, а библиотек это даже очень важный функционал. Я даже больше скажу: бОльшая часть базовых с++ библиотек написана не на самом с++, а на ассемблере. Также при написании проектов на других языках может потребоваться написать библиотеку на с++ для проекта, где также важно будет писать код на ассемблере.
@DonEstorsky
@DonEstorsky 2 жыл бұрын
@@nakamasama ну да -- примеров можно приводить до бесконечности.
@pekpyt6
@pekpyt6 2 жыл бұрын
Embedded programming.
@viacheslav1392
@viacheslav1392 Жыл бұрын
ассемблерные вставки это не про оптимизацию...
@deniskulakov682
@deniskulakov682 2 жыл бұрын
А подскажите где ролик про работу компилятора(перепроцесор компилирование линковка)?
@S0ERDEVS
@S0ERDEVS 2 жыл бұрын
kzfaq.info/get/bejne/fqh2dJmVsL2boXk.html
@metaSopp
@metaSopp Жыл бұрын
А что за текстовый редактор вы тут используете ?
@azamatk4302
@azamatk4302 2 жыл бұрын
DDD и clean code покинули чат =)
@nakamasama
@nakamasama 2 жыл бұрын
Соер, пожалуйста, объясни в следующем уроке по ассемблерным вставкам, как работать с системными переменными. Например, как вытащить системное время при помощи ассемлерной вставки. Просто не всегда есть возможность использовать библиотеки.
@prosto1076
@prosto1076 2 жыл бұрын
Только это скорее всего не язык си, а расширение языка от gcc
@prosto1076
@prosto1076 2 жыл бұрын
Соер, переименуйте канал с буквой O вместо цифры 0 в названии, так как Ютуб поиск не выдает ваш канал по запросу soer
@user-pg8ry1tm3t
@user-pg8ry1tm3t 2 жыл бұрын
Сто лет не упражнялся в асм оптимизации сишного кода…
@olezhonnv3215
@olezhonnv3215 2 жыл бұрын
Намудрили они с эттими процентами, модификаторами, кавычками и скобочками. Насколько я помню, Борланд С++ версии 3.0 компилил конструкции вида: asm { mov ax, 50 mov bx, 20 add ax, bx ... ... } И вроде как переменные можно было напрямую туда писать, без процентов и дальнейших перечислений ниже с модификаторами. Ну это давно было, в 98 году я Борландом тем компилил свои первые программы на С и С++.
@sergshutk2757
@sergshutk2757 Жыл бұрын
Это другой ассемблер и если его понять, то в некоторых случаях он более понятен.
@user-oc7py1vy6s
@user-oc7py1vy6s 2 жыл бұрын
06:20 "может показаться немного сложно" - для человека который не писал "низкоуровневых" языках это вообще супер сложно. Я почти ничего не понял. Спасибо за видео. Такой контент классный, но на нём много просмотров не собрать. Надеюсь хватит мотивации не забрасывать это дело.
@arphenti2502
@arphenti2502 2 жыл бұрын
Вопрос: в чем преимущество прямых вставок ассемблера перед SSE/AVX/NEON intrinsics? Почему бы просто не использовать интринзики?
@simplechannel7859
@simplechannel7859 2 жыл бұрын
В точку попал
@edkachalov
@edkachalov Жыл бұрын
Если просто использовать, то можно поламать регистры, которые использует компилятор для своих нужд.
@user-kf2xl2vk5m
@user-kf2xl2vk5m 2 жыл бұрын
Думаю про запуск бинарника из запущенного процесса тоже может быть интересной. kzfaq.info/get/bejne/nLeemcmSzt3Xgmw.html Но, тема про размещение в памяти затронута вскользь. Было бы интересно её развитие
@ddruganov
@ddruganov 2 жыл бұрын
я не силён совершенно в таких низкоуровневых вещах, но как ситуация обстоит с кроссплатформенностью в таком случае?
@user-tb4ph1mg1p
@user-tb4ph1mg1p 2 жыл бұрын
Никак. Когда переходите на асм - это автоматически означает привязывание к конкретной архитектуре, даже x86 и x64 в этом случае это разные архитектуры, об этом, кстати, Соер говорил.
@MrVintarb
@MrVintarb 2 жыл бұрын
Ifdef и пишешь под разные платформы
@GexPlayerMD
@GexPlayerMD 2 жыл бұрын
Чёт счётчик на заднем плане неправду показывает, 90К, но по факту ведь 88К.
@S0ERDEVS
@S0ERDEVS 2 жыл бұрын
Это не счетчик, а цель. На канал был видос про целеполагание, которое я использую .
@simplechannel7859
@simplechannel7859 2 жыл бұрын
Автор, ты хоть дай людям инфу, где можно применять такие вставки. Только когда будешь давать примеры не забудь про нативную память и совместное использование такой памяти, а то ведь тебя насмотрятся и кинутся реализовывать
@user-tp1qn2wt6t
@user-tp1qn2wt6t 2 жыл бұрын
в чем нюанс?
@user-xr9vo6le2r
@user-xr9vo6le2r 2 жыл бұрын
Ба, а что с глазом? Желаю здоровья.
@ybrbnf333
@ybrbnf333 2 жыл бұрын
Выбрал вилку как мужчина
The day of the sea 🌊 🤣❤️ #demariki
00:22
Demariki
Рет қаралды 98 МЛН
Was ist im Eis versteckt? 🧊 Coole Winter-Gadgets von Amazon
00:37
SMOL German
Рет қаралды 29 МЛН
LOVE LETTER - POPPY PLAYTIME CHAPTER 3 | GH'S ANIMATION
00:15
КАРМАНЧИК 2 СЕЗОН 7 СЕРИЯ ФИНАЛ
21:37
Inter Production
Рет қаралды 469 М.
Comparing C to machine language
10:02
Ben Eater
Рет қаралды 5 МЛН
ЭТИ КНИГИ СДЕЛАЮТ ИЗ ТЕБЯ ХАКЕРА
16:38
Пишу простую, но реальную программу. Python + Excel.
18:48
Клуб дедов-программистов
Рет қаралды 134 М.
Hello World на Ассемблере (x86)
9:34
Псевдо Программист
Рет қаралды 158 М.
The day of the sea 🌊 🤣❤️ #demariki
00:22
Demariki
Рет қаралды 98 МЛН