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 Завершаем стрим
5:33 У кого в доме больше одного кота тот понимает что коты не только мыслят но и разговаривают хвостом выписывая им иероглифы, голос для них - как для нас эмодзи.
Добрый день, хотелось бы услышать от вас мнение о других языках программирования: Go, Rust в сравнении с Node.js , сложно определиться где и какой лучше для каких задач
Assembler для javascript разработчика так же нужен как Bootstrap C++ разработчику.. Я как плюсовик за 6 лет коммерческого опыта не столкнулся с задачей где нужен был ассемблер, что говорить о js разработчиках.
Максим, держись там, в плане здоровья, я тебя прекрасно понимаю. Относительно ASM для JS прогеров, ты ведь понимаешь, что это 0.1% от всех JS вообще понимают, что ты тут рассказываешь? Хотя ASM для DOS вроде сейчас входит в стандартный курс программирования, хотя хз как сейчас, когда я учился у нас был в рамках Pascal. На сколько практичным будет изучение байт-кода, очень сомнительные перспективы, потому, что сегодня она так, завтра поменяли, что-то в среде, будет по другому. Даже в рамках образовательной, тоже такое занятие на любителя, копаться в байтах. С точки зрения реверс инженерии, может быть, когда совсем уже других способов не осталось.
Регистр IP забыли. Регистр флагов забыли. Эти важны. SI - Source Index. Ну и я бы все-таки регистры переменными не называл даже для упрощения, ибо потом у людей начнется путаница, когда начнете им объяснять, что переменные - это ячейки памяти. Регистры - это железные операционные ячейки процессора, в которые он откуда-то грузит данные, как-то их обрабатывает, и потом из них куда-то кладет результат. Все-таки, обучаться этому легче на более простом процессоре, нежели 8086. На мой взгляд, 8080 или Z80 - идеальнейшие варианты. В 8086 много уже предсказуемого развития, которое, тем не менее, отвлекает внимание от сути.
Регистр IP - это регистр которым вы не можете управлять напрямую. В отличии от тех регистров которые были озвучены. Только косвенно. Потому, его я не озвучивал, но он безусловно появиться в будущем когда мы будем говорить о том, как процессор выполняет те или иные команды Про регистры процессора. Я не понял что означает - куда-то кладт результат. Если Вы пытаетесь сказать, что существует необходимость содержимое регистра, например скопировать в оперативную память, для того, чтобы потом что-то с этим делать, то я совершенно не согласен с этим. По причине того, что можно писать программу которая будет оперировать только регистрами процессора. Без необходимости держать рещультаты своей работы отдельно в оперативной памяти или какой-либо еще. Регистры процессора - это таже самая память. Только именованная и самая быстрая. Как только мы говорим про именнованность - мы сразу получаем типичную аналогию с коробочками. Которыми регистры и есть.
@@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 написали. Ну еще генерацию процессором прерываний самому себе в связи с трассировкой инструкций, или в связи с выполнением неподдерживаемой инструкции можно за уши притянуть, но это тоже уже такое себе, опять же тут просто задействован механизм векторов прерываний, реального прерывания не было, лишь его имитация для удобной обработки особой ситуации.
@@demimurych1 и в javascript, когда называют переменные "коробочками", имеют в виду структуры в памяти, имеющие адрес. А вот процессор может загрузить и содержать в своем регистре значение такой "коробочки", или адрес ячейки памяти (указатель на "коробочку"). Грубо говоря, регистры - это его руки, вот он может брать в свои руки значения из коробок, т.е. или из памяти с адресом, или из устройств ввода/вывода с адресом, что-то с ними делать, считая буквально на пальцах этих своих рук (АЛУ), и по завершению вычислений класть посчитанное в эти или другие коробки, чтобы мы увидели результат - либо в память с адресом, либо в устройство с адресом, которые ничего подобного со своими значениями делать не умеют. Ну хотя, устройства может быть и умеют, на то они и устройства. Вы реально этими своими "коробочками" и "переменными" запутаете людей.
я в самом начале посвятил єтому 30 секунд. єсли вы, озаботитесь производительностью или єффективностью своего js кода, то вы неизбежно придете к логам v8 о том, как он работает с вашим кодом. а єто автоматически будет требовать от вас, базовых навыков чтения ассемблерного кода.
огромное, от всей души, спасибо! такого рода источника информации просто нет! поправляйся!)
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 Завершаем стрим
Поправляйтесь! Очень хорошая и понятная подача материала, ждём новых видео
Как раз то, что я хотел освоить. Спасибо за ролик, желаю скорейшего выздоровления
Спасибо за это видео, где вы разжевываете все это! очень интересно смотреть и мотивирует изучать дальше
Здоровья, старый!
5:33 У кого в доме больше одного кота тот понимает что коты не только мыслят но и разговаривают хвостом выписывая им иероглифы, голос для них - как для нас эмодзи.
Супер доступно! Не проходите мимо!
Автор мой вдохновитель
Браво, маэстро!
Кому все еще не понятно, интересно и вы любите поиграть, советую игрушку Turing Complete. Очень упрощает порог вхождения.
Какой же кот хороший, каждый раз радует глаз
54:57 Вау, доска!!! Навыки стримлинга всё лучше и лучше...
Мурыч живи
Регистр BP означает "Base Pointer"
Молодец что вандама позвал на стрим. Вандам и Демимур сила
Вандам это кто?
@@menceyh собеседник Мурычв
great video
SI - это Source Index
BP - это Base Pointer, указатель на кадр стека.
продолжение будет?
Начало 5:42
57:47 Аккумулятор, база, счетчик, данные. Как то подозрительно не знать основы и писать вирусы.
будет ли у вас разбор гидры?
щось я аж приздивувався коли пан почав писати 16ковим кодом 😀
Максим спасибо за видео, здоровья Вам. Пока только один вопрос - кот, который был показан вначале он байт, машинный или пока ещё javascript?
Добрый день, хотелось бы услышать от вас мнение о других языках программирования: Go, Rust в сравнении с Node.js , сложно определиться где и какой лучше для каких задач
а про WebAssembly есть|будет чё?
❤
Assembler для javascript разработчика так же нужен как Bootstrap C++ разработчику..
Я как плюсовик за 6 лет коммерческого опыта не столкнулся с задачей где нужен был ассемблер, что говорить о js разработчиках.
ремесло тем и отличается от RnD :)
Кот любит сметану ;)
єтот не любит.
єтот любит МЯСО
@@demimurych1базированый кот
Максим, держись там, в плане здоровья, я тебя прекрасно понимаю.
Относительно ASM для JS прогеров, ты ведь понимаешь, что это 0.1% от всех JS вообще понимают, что ты тут рассказываешь?
Хотя ASM для DOS вроде сейчас входит в стандартный курс программирования, хотя хз как сейчас, когда я учился у нас был в рамках Pascal.
На сколько практичным будет изучение байт-кода, очень сомнительные перспективы, потому, что сегодня она так, завтра поменяли, что-то в среде, будет по другому.
Даже в рамках образовательной, тоже такое занятие на любителя, копаться в байтах. С точки зрения реверс инженерии, может быть, когда совсем уже других способов не осталось.
Конечно, но здесь ведь обитает своя флора, которой это интересно.
ты хочешь, чтобы мурыч стал кем? хаудихо?
@@3wtfreero446 нет конечно, мурыча контент и интересен тем, что он мурыч.
"Если вы понимаете ассемблер, то любая скомпилированная программа для вас - open source!" 😂😂
How can withdraw USDT to binance account using only these words "head isolate sound end kit industry choice festival limit stable dolphin derive"?
кіт схожий на Мурича )))
Регистр IP забыли. Регистр флагов забыли. Эти важны. SI - Source Index. Ну и я бы все-таки регистры переменными не называл даже для упрощения, ибо потом у людей начнется путаница, когда начнете им объяснять, что переменные - это ячейки памяти. Регистры - это железные операционные ячейки процессора, в которые он откуда-то грузит данные, как-то их обрабатывает, и потом из них куда-то кладет результат. Все-таки, обучаться этому легче на более простом процессоре, нежели 8086. На мой взгляд, 8080 или Z80 - идеальнейшие варианты. В 8086 много уже предсказуемого развития, которое, тем не менее, отвлекает внимание от сути.
Регистр IP - это регистр которым вы не можете управлять напрямую. В отличии от тех регистров которые были озвучены. Только косвенно. Потому, его я не озвучивал, но он безусловно появиться в будущем когда мы будем говорить о том, как процессор выполняет те или иные команды
Про регистры процессора. Я не понял что означает - куда-то кладт результат. Если Вы пытаетесь сказать, что существует необходимость содержимое регистра, например скопировать в оперативную память, для того, чтобы потом что-то с этим делать, то я совершенно не согласен с этим. По причине того, что можно писать программу которая будет оперировать только регистрами процессора. Без необходимости держать рещультаты своей работы отдельно в оперативной памяти или какой-либо еще.
Регистры процессора - это таже самая память. Только именованная и самая быстрая. Как только мы говорим про именнованность - мы сразу получаем типичную аналогию с коробочками. Которыми регистры и есть.
@@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 написали. Ну еще генерацию процессором прерываний самому себе в связи с трассировкой инструкций, или в связи с выполнением неподдерживаемой инструкции можно за уши притянуть, но это тоже уже такое себе, опять же тут просто задействован механизм векторов прерываний, реального прерывания не было, лишь его имитация для удобной обработки особой ситуации.
@@demimurych1 и в javascript, когда называют переменные "коробочками", имеют в виду структуры в памяти, имеющие адрес. А вот процессор может загрузить и содержать в своем регистре значение такой "коробочки", или адрес ячейки памяти (указатель на "коробочку"). Грубо говоря, регистры - это его руки, вот он может брать в свои руки значения из коробок, т.е. или из памяти с адресом, или из устройств ввода/вывода с адресом, что-то с ними делать, считая буквально на пальцах этих своих рук (АЛУ), и по завершению вычислений класть посчитанное в эти или другие коробки, чтобы мы увидели результат - либо в память с адресом, либо в устройство с адресом, которые ничего подобного со своими значениями делать не умеют. Ну хотя, устройства может быть и умеют, на то они и устройства. Вы реально этими своими "коробочками" и "переменными" запутаете людей.
А что это за созвоны? В них можно участвовать?
конечно.
напишите мне. и если тема того, о чем я хочу говорить, совподает с тем, про что вы хотите спрашивать - самое время созвониться
нахрен 60 кадров? асм не нужен, но 60 кадров зачем
Надеюсь ничего серьезного с здоровьем? Выздаравливай.
О, леший снова из берлоги вылез 😂
Windows богомерзкий, Linux православный. А что делать, если ты атеист?
по остаточному принципу, либо фряха либо макОС
Не понравился урок. Тыкание палкой в какашку. Чувствую себя потерявшим время....
Зачем это js программисту?
я в самом начале посвятил єтому 30 секунд.
єсли вы, озаботитесь производительностью или єффективностью своего js кода, то вы неизбежно придете к логам v8 о том, как он работает с вашим кодом.
а єто автоматически будет требовать от вас, базовых навыков чтения ассемблерного кода.
@@demimurych1 спасибо, понял!
@@demimurych1если нужна производительность, не лучше ли выбрать другой язык, например раст ?
@@Edgar-pu1lc В браузере нет Rust, но есть серьезные JS приложения требующие оптимизации, например Google Docs.
@@Edgar-pu1lcУдачи тебе писать на Rust для браузера