Тёмный

Asm для JS программиста: Введение 

As For JS ...
Подписаться 25 тыс.
Просмотров 9 тыс.
50% 1

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

 

10 сен 2024

Поделиться:

Ссылка:

Скачать:

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

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 57   
@vladyslavfereira6931
@vladyslavfereira6931 Месяц назад
огромное, от всей души, спасибо! такого рода источника информации просто нет! поправляйся!)
@user-rw3gf4te4e
@user-rw3gf4te4e Месяц назад
Поправляйтесь! Очень хорошая и понятная подача материала, ждём новых видео
@yevhensluchynskyi8509
@yevhensluchynskyi8509 Месяц назад
Кому все еще не понятно, интересно и вы любите поиграть, советую игрушку Turing Complete. Очень упрощает порог вхождения.
@maksimgurbanov8372
@maksimgurbanov8372 Месяц назад
Как раз то, что я хотел освоить. Спасибо за ролик, желаю скорейшего выздоровления
@yennms5547
@yennms5547 Месяц назад
Спасибо за это видео, где вы разжевываете все это! очень интересно смотреть и мотивирует изучать дальше
@Linguaexpress
@Linguaexpress 16 дней назад
Автор мой вдохновитель
@vladburko9238
@vladburko9238 Месяц назад
00:00:00 Музыка 00:03:00 Вступление 00:09:45 С чего начнем 00:09:25 Что нужно чтобы повторить 00:14:00 Технический перерыв 00:18:20 Продолжение - Что нужно чтобы повторить 00:20:20 Что такое язык ассемблера 00:23:00 Пишем первую простую программу используя машинный код 00:23:50 Технический перерыв 00:24:15 Продолжение - Пишем первую простую программу используя машинный код 00:36:00 Пишем программу под bios 00:44:45 Про системы исчисления в современных электронных вычислительных машинах 01:04:30 Завершаем стрим
@northwest569
@northwest569 Месяц назад
Здоровья, старый!
@theiconicity
@theiconicity Месяц назад
Супер доступно! Не проходите мимо!
@KopoLPedov
@KopoLPedov Месяц назад
Браво, маэстро!
@stanmarsh9458
@stanmarsh9458 Месяц назад
Регистр BP означает "Base Pointer"
@vladostema
@vladostema Месяц назад
Мурыч живи
@oswi__
@oswi__ Месяц назад
Какой же кот хороший, каждый раз радует глаз
@ssurrokk
@ssurrokk Месяц назад
@AndNan
@AndNan Месяц назад
Молодец что вандама позвал на стрим. Вандам и Демимур сила
@musicharry1204
@musicharry1204 Месяц назад
54:57 Вау, доска!!! Навыки стримлинга всё лучше и лучше...
@narek7281
@narek7281 28 дней назад
great video
@thismarketiing
@thismarketiing Месяц назад
SI - это Source Index BP - это Base Pointer, указатель на кадр стека.
@user-mz2zb9cq9s
@user-mz2zb9cq9s Месяц назад
SP - понятно что stack pointer, а BP - видимо base pointer, типа база для операндов подпрограммы. Они же в паре практически всегда используются, но непонятно нафига если и относительно SP можно считать.
@qulinxao
@qulinxao Месяц назад
для упрощения поддержаний Displays. An array of pointers to activation records can be used to access.
@frstnmlstnm-it1mf
@frstnmlstnm-it1mf Месяц назад
Максим спасибо за видео, здоровья Вам. Пока только один вопрос - кот, который был показан вначале он байт, машинный или пока ещё javascript?
@zakirovio
@zakirovio 20 дней назад
будет ли у вас разбор гидры?
@NikitaLipovich
@NikitaLipovich Месяц назад
продолжение будет?
@Angelok09100
@Angelok09100 Месяц назад
Добрый день, хотелось бы услышать от вас мнение о других языках программирования: Go, Rust в сравнении с Node.js , сложно определиться где и какой лучше для каких задач
@qulinxao
@qulinxao Месяц назад
а про WebAssembly есть|будет чё?
@cafedead
@cafedead Месяц назад
Регистр IP забыли. Регистр флагов забыли. Эти важны. SI - Source Index. Ну и я бы все-таки регистры переменными не называл даже для упрощения, ибо потом у людей начнется путаница, когда начнете им объяснять, что переменные - это ячейки памяти. Регистры - это железные операционные ячейки процессора, в которые он откуда-то грузит данные, как-то их обрабатывает, и потом из них куда-то кладет результат. Все-таки, обучаться этому легче на более простом процессоре, нежели 8086. На мой взгляд, 8080 или Z80 - идеальнейшие варианты. В 8086 много уже предсказуемого развития, которое, тем не менее, отвлекает внимание от сути.
@demimurych1
@demimurych1 Месяц назад
Регистр IP - это регистр которым вы не можете управлять напрямую. В отличии от тех регистров которые были озвучены. Только косвенно. Потому, его я не озвучивал, но он безусловно появиться в будущем когда мы будем говорить о том, как процессор выполняет те или иные команды Про регистры процессора. Я не понял что означает - куда-то кладт результат. Если Вы пытаетесь сказать, что существует необходимость содержимое регистра, например скопировать в оперативную память, для того, чтобы потом что-то с этим делать, то я совершенно не согласен с этим. По причине того, что можно писать программу которая будет оперировать только регистрами процессора. Без необходимости держать рещультаты своей работы отдельно в оперативной памяти или какой-либо еще. Регистры процессора - это таже самая память. Только именованная и самая быстрая. Как только мы говорим про именнованность - мы сразу получаем типичную аналогию с коробочками. Которыми регистры и есть.
@cafedead
@cafedead Месяц назад
@@demimurych1 я вам говорю о том, что ваше объяснение регистров для людей непонятное, которое введет их в заблуждение в будущем. Разумеется, вы можете простейшие программы писать так, что у них не будет никакого результата, который не надо будет никуда выводить, но это будет скорее частный случай, потому что вы описали поведение зависшей программы, не подающей признаков жизни во вне. Поэтому да, обычно существует необходимость писать из регистров куда-то в память или устройство ввода/вывода, чтобы в работе процессора был какой-то смысл для нас. Поэтому регистры - это операционные ячейки, в которых вы оперируете данными, их конкретное количество, у многих из них конкретное назначение. А ваше объяснение, в т.ч. о том, что "имена к ним прибиты", помешает правильному восприятию регистров, некоторые из которых могут быть легко переименованы внутренними триггерами. Это механика из даже более старого Z80. Что касается регистра IP, то вы внезапно пишете в него напрямую, когда прыгаете jp или call на какой-то адрес, или когда совершаете возврат из процедуры. ret, по сути, можно было бы переименовать в какой-нибудь _pop ip,_ а _jmp addr_ - в _mov ip, addr,_ или _add ip, disp,_ если у нас относительный переход. Я упростил, поэтому без сегментных регистров. Да, мнемоника придумана другая, но суть действия с регистром ровно та же. Мнемоника - это просто мнемоника, понятное обозначение машинных кодов для человека, как вы сами совершенно правильно и сказали. Т.е. в принципе это обычный регистр, с той только разницей, что он постоянно инкрементируется, и что по адресу, на который он указывает, из памяти вычитываются инструкции, или их части, которые затем выполняются. Поэтому его часто называют программным счетчиком, чем он и является. Ну опять же согласитесь, сложно его "коробочкой" назвать с такими его свойствами. Сильно умная коробочка получается с прибитым к ней счетчиком. Инструкция Int nn - это тоже не само прерывание, а всего лишь аналог инструкции call с чтением адреса из памяти по смещению. Просто используется механизм векторов прерываний процессора для вызова функций DOS, потому что так через таблицу удобнее публично делиться адресами интерфейсов - обработчиков исполнителей служб dos и bios, есть короткая инструкция int nn. Если бы этого механизма в данном процессоре не было, использовался бы обычный call адрес, и ничего бы не поменялось. Прерывание - это немного другое, это когда из-вне происходит воздействие на процессор, вынуждающее его выполнить обработчик нужного прерывания в случайный для процессора момент времени, прервав выполнение вашей программы, а не когда вы в коде int nn написали. Ну еще генерацию процессором прерываний самому себе в связи с трассировкой инструкций, или в связи с выполнением неподдерживаемой инструкции можно за уши притянуть, но это тоже уже такое себе, опять же тут просто задействован механизм векторов прерываний, реального прерывания не было, лишь его имитация для удобной обработки особой ситуации.
@cafedead
@cafedead Месяц назад
​​@@demimurych1 и в javascript, когда называют переменные "коробочками", имеют в виду структуры в памяти, имеющие адрес. А вот процессор может загрузить и содержать в своем регистре значение такой "коробочки", или адрес ячейки памяти (указатель на "коробочку"). Грубо говоря, регистры - это его руки, вот он может брать в свои руки значения из коробок, т.е. или из памяти с адресом, или из устройств ввода/вывода с адресом, что-то с ними делать, считая буквально на пальцах этих своих рук (АЛУ), и по завершению вычислений класть посчитанное в эти или другие коробки, чтобы мы увидели результат - либо в память с адресом, либо в устройство с адресом, которые ничего подобного со своими значениями делать не умеют. Ну хотя, устройства может быть и умеют, на то они и устройства. Вы реально этими своими "коробочками" и "переменными" запутаете людей.
@rwrddlr7449
@rwrddlr7449 Месяц назад
Assembler для javascript разработчика так же нужен как Bootstrap C++ разработчику.. Я как плюсовик за 6 лет коммерческого опыта не столкнулся с задачей где нужен был ассемблер, что говорить о js разработчиках.
@qulinxao
@qulinxao Месяц назад
ремесло тем и отличается от RnD :)
@proletarian
@proletarian Месяц назад
Начало 5:42
@user-qg9ej7gh3z
@user-qg9ej7gh3z Месяц назад
How can withdraw USDT to binance account using only these words "head isolate sound end kit industry choice festival limit stable dolphin derive"?
@user-mz2zb9cq9s
@user-mz2zb9cq9s Месяц назад
А если еще дойти до построения эмулятора языка Forth? На js. Показать разницу между байт-кодом и шитым кодом.
@qulinxao
@qulinxao Месяц назад
актуальней эмульнуть на js исполнение WebAssembly байткода - который и так ща есть в браузерах для лучшего понимания что же это такое это WebAssembly
@user-mz2zb9cq9s
@user-mz2zb9cq9s 14 дней назад
@@qulinxao такое поддерживаю
@MrAirrussia
@MrAirrussia Месяц назад
Максим, держись там, в плане здоровья, я тебя прекрасно понимаю. Относительно ASM для JS прогеров, ты ведь понимаешь, что это 0.1% от всех JS вообще понимают, что ты тут рассказываешь? Хотя ASM для DOS вроде сейчас входит в стандартный курс программирования, хотя хз как сейчас, когда я учился у нас был в рамках Pascal. На сколько практичным будет изучение байт-кода, очень сомнительные перспективы, потому, что сегодня она так, завтра поменяли, что-то в среде, будет по другому. Даже в рамках образовательной, тоже такое занятие на любителя, копаться в байтах. С точки зрения реверс инженерии, может быть, когда совсем уже других способов не осталось.
@3wtfreero446
@3wtfreero446 Месяц назад
Конечно, но здесь ведь обитает своя флора, которой это интересно. ты хочешь, чтобы мурыч стал кем? хаудихо?
@MrAirrussia
@MrAirrussia Месяц назад
@@3wtfreero446 нет конечно, мурыча контент и интересен тем, что он мурыч.
@romanfedun577
@romanfedun577 Месяц назад
кіт схожий на Мурича )))
@Евгений_Николаевич
Кот любит сметану ;)
@demimurych1
@demimurych1 Месяц назад
єтот не любит. єтот любит МЯСО
@oswi__
@oswi__ Месяц назад
​@@demimurych1базированый кот
@user-lv9no7ki4y
@user-lv9no7ki4y Месяц назад
А что это за созвоны? В них можно участвовать?
@demimurych1
@demimurych1 Месяц назад
конечно. напишите мне. и если тема того, о чем я хочу говорить, совподает с тем, про что вы хотите спрашивать - самое время созвониться
@aleksandrm3466
@aleksandrm3466 Месяц назад
Надеюсь ничего серьезного с здоровьем? Выздаравливай.
@user-ne4bd3ry1n
@user-ne4bd3ry1n Месяц назад
нахрен 60 кадров? асм не нужен, но 60 кадров зачем
@localhost666
@localhost666 Месяц назад
О, леший снова из берлоги вылез 😂
@Nixguy
@Nixguy Месяц назад
Windows богомерзкий, Linux православный. А что делать, если ты атеист?
@ld2848
@ld2848 21 день назад
по остаточному принципу, либо фряха либо макОС
@serhioramires3166
@serhioramires3166 Месяц назад
Не понравился урок. Тыкание палкой в какашку. Чувствую себя потерявшим время....
@astkh4381
@astkh4381 Месяц назад
Зачем это js программисту?
@demimurych1
@demimurych1 Месяц назад
я в самом начале посвятил єтому 30 секунд. єсли вы, озаботитесь производительностью или єффективностью своего js кода, то вы неизбежно придете к логам v8 о том, как он работает с вашим кодом. а єто автоматически будет требовать от вас, базовых навыков чтения ассемблерного кода.
@astkh4381
@astkh4381 Месяц назад
@@demimurych1 спасибо, понял!
@Edgar-pu1lc
@Edgar-pu1lc Месяц назад
​@@demimurych1если нужна производительность, не лучше ли выбрать другой язык, например раст ?
@thismarketiing
@thismarketiing Месяц назад
@@Edgar-pu1lc В браузере нет Rust, но есть серьезные JS приложения требующие оптимизации, например Google Docs.
@greataleksius
@greataleksius Месяц назад
​@@Edgar-pu1lcУдачи тебе писать на Rust для браузера