Hello World на Ассемблере (x86)
ฝัง
- เผยแพร่เมื่อ 10 ก.พ. 2021
- Сегодня мы напишем простую программу "Hello World!" на языке программирования Ассемблер (Assembly) x86.
Вы никогда не задумывались как именно работает компьютерная программа? Современные языки программирования по типу Python, C++, Java использую понятные для любого человека команды: "if/else" - постановка условий, "print" - вывод текста на экран и т.д. Однако компьютер не понимает таких команд, из-за чего приходиться переводить код в набор машинных команд, понятных лишь процессору. Именно об этом мы и поговорим!
Привет! Меня зовут Игорь. На моём канале ты сможешь найти уроки по нейронным сетям, визуализации данных и программированию в целом.
Моя цель - сделать программирование более доступным и понятным. Для просмотра моих видео вам не нужно высшее образование по Computer science. Все непонятные темы и термины я буду понятно объяснять и показывать на примерах.
Оставайся с нами, и чтобы не пропустить ни одного видео - подписывайся на канал и нажимай на колокольчик!
Команды из видео:
► nasm -felf64 hello.asm
► ld hello.o
► ./a.out
✅ Группа VK - bit.ly/VK_PseudoDev
✈️ Telegram канал - t.me/PseudoDeveloper
💲💲 Поддержи проект на Boosty - boosty.to/pseudodev
📖 Плейлист "Программирование на Практике" - • Программирование на пр...
📖 Плейлист “Нейронные Сети на Понятном Языке” - • Нейронные Сети на Поня...
📖 Плейлист "Изучение NumPy" -
• Изучение NumPy
Ну что, как вам ролик?)
Класс.
Агонь
Понимаю, что эта тема может всем не зайти, но хотелось бы увидеть разбор языка в версии для DOS
Очень качественно. Не бросай канал
@@Hlebopodobniy ты конечно сказанул
Ты понимаешь, что разговор будет серьёзным, когда видишь ролик «hello world» на 9 минут
АХАХАХАХАХА
Да нормально,учителя информатики вообще умудряются растянуть тему "создание переменных на Python" на целые 45 минут..
как то страшно стало 😨
Для ассемблера этого мало)
@@Sus-uh7ve правильно делают, если это в школе, школьникам нужно вбить теорию вголову, иначе никак
Помню в 90-х ходил в компьютерный клуб: поиграть, покодить простые программы на Бейсике. И там был один человек, который мог программировать на ассемблере, в том числе игры, которые на Бейсике уже не напишешь. Он даже пытался объяснить мне свой код, до сих пор помню фразу "И вот тут я обнулил Аш Эль" Я надеюсь, он стал высококлассным программистом...
не, он хакнул пентагон и сейчас сидит в алькатрасе
Программить на компьютерном клубе, вот что меня напугало.
@@ilhanilhanDev ну да, программить сидя на клубе, а не в нем это страшно, можно даже упасть если потерять равновесие.
Аш Эль, это он на Z80 что ли программировал на спектруме? Так это ерунда, там всё просто было, и архитектура у компьютера простая понятная была и команд не очень много, все можно было легко запомнить.
Если HL, то этот чувак программировал для процессора Z80, который стоял в ZX-Spectrum. HL это не один регистр, а два 8-битных. В i8086 такого уже не было, потому что он был 16-битный.
в унике сдаем лабы по ассемблеру, после него понимаешь что с++ очень понятный и легкий язык
Реально
С это ещё добрый язык для людей
А вот ты попробуй в Майнкрафте x86 архитектуру воссоздать
Почему-то думал, будет монстр на 100 строк, где чуть ли не из отдельных ноликов и единичек собирается каждый символ и отдельно записывается в ячейку памяти. А на деле оказалось не так все и страшно и даже почти понятно :)
Ключевое слово "почти"
Это только хелоу ворлд)
@@maximleo1904 я чела видел который на ассемблере тетрис написал
Ууу, я на паскале игру симулятор вообще в 15 строк уместил.
@@yankeemustdie-4159 какую?
Мама забери меня, мне страшно
На заметку: инфы по ассемблеру мало на великомогучем, а вот на английском - вполне достаточно.
Это касается не только ассемблера
@Seomastertop надо сделать компилятор для двоичного кода, всё остальное оскорбляет дух машины
Ravesly сайт, там есть
@@SkannerKaijy, Компилятор для двоичного кода не нужен)
Помните, что все популярные языки программирования, были написаны на ассемблере, так сказать "Это база" и те, кто умеет ею обращаться, они реально боги, те кто пише на питоне, они крепостные крестьяне
Языки на си пишутся, разве нет?
Точнее даже не языки, а компиляторы и интерпретаторы
@@slavaandreev1494и то и другое написано на си и плюсах, увы
@@slavaandreev1494а си на чем написан? На ассемблере
Современные языки программирования пишутся не на асм. Хотя, думаю он таки полезен для всяких задротов, которые любят дизасемблировать файлы (ака условных пиратов). Это не только весело, но иногда и полезно. Хотя учиться этому суперхаккингу наверняка очень долго
На самом деле имея под рукой мануал по архитектуре процессора и описанием команд, то на асме программировать чертовски просто, только любая более или менее серьезная программа превратится в огромное полотно команд, в котором после недельного перерыва уже не разберешься 😂
А Джон Кармак на асме вершил одну революцию в видеоигровой индустрии за другой.
И не удивительно.
@@user-jz8ze1jm6v что за сказки, исходный код его движков это С
Так вот это и есть плата за быстродействие приложения. Дольше промучаешься, зато требования к быстродействию железа на порядок уменьшаться.
@@user-sk2hu5om3n В теории это может и так, вот только вряд ли ты будешь писать супер идеально оптимизированный код (лучше чем оптимизирует его компилятор)
Мне, как человеку знающий Python3.12 и изучающий C++, было АБСОЛЮТНО понятно, о чем шла речь. И я совсем не устроил суицид после этого видео.
Знакомый - сеньор : начни учить программирование с ASSамблера
Я смотря как написать "хэллоу ворлд": Пиздец...
Нет, ассемблер наилучший вариант для новичка. Да, после ассемблера всё будет даваться легче, а также будет понимание работы компьютера. Что я вообще говорю? После изучения ассемблера можно будет писать под любой микроконтроллер или написать компилятор или интерпретатор под собственный язык!
@@mega_retard777 можно, а смысл? Зачем создаются высокоуровневые языки программирования? Почему они становятся популярными, а ФОРТРАН и АССемблер нет? ВРЕМЯ?!! Пока ты выучишь язык, напишешь на нем мало-мальски толковую программу, любой старшеклассник уже успеет такую прогу сваять раз 20.
Думаю лучше начать с Phyton, он лёгкий и если его выучить то такие языки как с++, джава, и т.д. будут даваться легко.
Не совсем согласен. Вообще нужно отталкиваться от того: "а что ты будешь разрабатывать?"
Но если брать общую температуру по палате, то лучше и вправду начать с Си образных языков, т.к. их архитектура самая шаблонная для большинства ЯП. Про Python уже такое не скажешь.
Upd: крч, надо будет сделать видос на эту тему, уж очень она занимательная 😁
Прошло 7 месяцев. Я забил на карьеру прогера и пошел на завод. Держу в курсе )
Я один, с каждым новым вопросом автора, ждал ответ "х*й его знает"?
Спасибо! Многие моменты стали понятны, продолжайте делать ещё видео про язык ассемблера
Советую всем интересующимся поиграть в TIS-100 и на этом закончить знакомство с ассемблером.
Годнота
Кстати интересный факт:
Большинство фундамента БИОС написаны на ASM
И лишь малая часть на C (UEFI)
Впринципе логично, так как непосредственно с железками работаем
А с учётом компиляции то все
Из всех вариантов выбрали самый извращённый - асм под эмулятором линукса на винде. Сэр знает толк в извращениях.
Если виндовс еще и в virtualbox, тогда вообще шик
Это не эмулятор
@@YuraSamusenkoахахаха у меня именно такой случай
Скажите а где найти урок - ассемблер за 5 минут? А то у меня собес на асм разработчика через 10 минут.
Да и ещё вопрос - как выйти из vi?
Могу за тебя свечку в церкви поставить)
@@PseudoDev если за здравие - тогда ок 😁
(Дополнение и изменённому комменту):
Погодь, Vi или Vim 🙃? Если Vim, то сперва нужно сохранить текст ":w (тут указываешь название, если этого ещё не делал)", а потом просто выходишь командой ":q"
Можно ещё сделать всё за одну команду ":wq", так будет быстрее)
@@PseudoDev спасибо. Это шутка конечно. Я не помню точно, т.к. не пользуюсь ни ви ни вим. Но я выходил м помощью :wq, если не ошибаюсь. Я тоже программист любитель-самоучка пишу на pyqt ну и чистом пайтоне. Есть пет-проджект программки для хобби (для радиолюбителей) linuxlog.su - сайтик пректа. И пользуюсь пайчармом, т.к. использую его плюшки
У Гоши Дударя)
а подход хорош! Это, как научится играть три аккорда на гитаре. Дальше, либо так и будешь во дворе играть, либо Опарина с Остро догонять начнешь. Для первого понимания отлично.
Ты выпустил видос🥳🥳🥳. Думал не доживу, если честно
Более ранний ассемблер до появления ПК.
HELLO CSECT
STM 14,12,12 (13)
LR 12,1
BALR 11,0
USING *,11
LA 15, SAVE
ST 15,8 (13)
ST 13,4 (15)
LR 13,15
WTO 'Hello World'
L 13,4 (13)
XC 8 (4,13), 8 (13)
LM 14,12,12 (13)
SR 15,15
BR 14
SAVE DS 18F
END HELLO
Вызов программы
//PROG JOB (FIO),CLASS=A,MSGLEVEL=(0,0)
//STEP EXEC PGM=HELLO
//
Кстати, до сих пор используется даже по прошествии более полувека.
Возможно немножко напутал, но суть не менятся: сохранили регистры, назначали базовый регистр, вывели сообщение, возратили прежние значения регистров, обнулили код возврата, выход из программы, а в конце поле для сохранения регистров.
Да ассемблер наоборот самый простой язык. Сложность заключается лишь в том, как собрать из таких элементарных команд что-то полезное. Ну и литнратуры по нему предостаточно. Так что автор тут не совсем прав.
Но только большая часть этой литературы написана во времена DOS или Windows XP.
@@user-jz8ze1jm6v думаешь ассемблер сильно изменился?
@@yuzeless493 асм не изменился, а ОС, поверх которой работает программа, радикально изменилась.
@@user-jz8ze1jm6v при чем тут ОС? Ассемблер работает с инструкциями процессора, хоть и через прослойку виртуализации. Ни архитектура процессоров, ни ассемблер не изменились
@@yuzeless493там до херища постоянно меняется. Лично я сломался после vliw, и это было ещё до 64 разрядов...
мне кажется надо и пайтон и АСМ паралельно изучать. Синтакс уж точно не перепутаешь. Да и надоело мелочится пошел в пайтон, захотел попотеть в АСМ. Ну если АСМ могешь то и другое очень быстро привьется. На собеседовании можно самому уже спросить, а что такое Аккумулятор и сказать потом садись 2.
Метка -- просто число, чаще всего адрес... Никакая это не функция. Метку уж скорее и можно сравнить с переменными. При компиляции она просто заменяется на число.
А разве обычные прыжки и прыжки в операциях сравнения не по разному работают?
когда увидел ролик о hello world на 9 минут: ваша душа теряет решимость, ведь теперь вы боитесь ассемблер
Дружище!!! как приятно слушать человека который точно знает о чем говорит! Классс"
.... но счастье было так близко! так возможно ))) все что ты пишешь на экране наверно своего дисплея, все в черной темноте" бывает видно только когда ты выделяешь фрагмент,так что кода этой супер программы я так и не увидел" Неужели только я? непонятно, щас гляну что другие пишут
Подожди, байт либо от 0 до 255, либо от -128 до 127
Все верно
Великолепный обзор. У тебя талант.
Вот создаю ос на c и asm и ты мне очень помог
Правда? Офигенно! Очень приятно слышать, спасибо 🙂
Автор ролика по поводу инфы для ассемблера не прав, просто искать не хотел. А кому интересно тот найдёт. На том же Авито или барахолке почти любого города можно попробовать найти старые книги про ассемблер. И лет 10 назад с этим вообще никаких проблем не было😂 кому интересно, лично в моем распоряжении есть книга: "Программирование на языке ассемблера для персональной ЭВМ фирмы IBM" за авторством Д. Брэдли.
Панч в сторону питона за панчем. 😂
Мне кажется что питон мало чем от английского отличается. Помойка обыкновенная.
@@No_name_music да, согласен, настоящие языки программирования должны быть на русском!
@@php1036 Есть же НЛП которые продвигают могучие инфоцигане, деньги им то несут значит программирование рабочее
@@php1036 1C
Я в ассемблере неплохо шарил.до 20- и лет.а потом : работа,семья.некагдо стало.ща 43 .всё надеюсь время будет
А можешь сделать видео про GNU ассемблер(не обязательно Hello world!)
msg1:
db "Hello", 10
msg2:
db "Hi", 10
_start:
mov rax, 1
mov rdi, 1
mov rsi, msg1
mov rdx, 5
mov rsi, msg2
mov rdx, 2
syscall
mov rax, 60
syscall
section .data
global _start
section .text
Извините, а Вы можете решить обратную задачу??
Это же код вроде под x64 и при компиляции ты формат указывал elf64. На x86 я помню вообще делают с помощью int прерываний. Когда-то я немного учил ассемблер под DOS 😄
тык х86 включают в себя 32-битные и 64-битные процессоры..
х86 можно сравнивать только с arm процессорами (получили огрумную популярность в мобилках) и может ещё с какими, если есть, НО никак не с 32-64 (потому что армы тоже бывают 32-64-битные)
@@user-yu7jn7fm8g так у x64 регистры по другому называются ведь или я что-то путаю
Привет, видео прикольное, но над ним действительно только посмеяться(о чем ты указал в начале видео). Если интересно для будущих роликов могу тебе накидать инфы по ASM, могу даже чему то научить твоих подписчиков(через тебя естественно), если хочешь напиши мне. Кстати ты пишешь не на ASM x86, а на ASM x64. Регистры с припиской R (RAX, RDX, RDI и т.д.), это 64-разрядные регистры, они есть у процессоров архитектуры x64, в архитектуре x86 регистры 32-разрядные (EAX, EBX, ECX и т.д.).
я что-то не понял. В названии х86, а использует х64 регистры (rax, rbx....) или я что-то не понимаю?
Изначально появилась архитектура x86, которая вообще была 16-битной. Потом ее апгрейднули до 32 бит, новую архиткектуру назвали IA-32. А когда апгрейднули до 64 бит, для отличия стали называть x86_64, но сокращенно все эти архитектуры могут называть просто x86
А я только ассемблер и знаю🤣🙃
Вроде чётко все объяснил...
А что идёт ещё ниже чем ассемблер? Ведь слова-команлы (mov,rdx....) тоже както создали.
Я не программист но стало интересно.
ассемблер это не совсем язык, это семейство мнемоник, где за короткими словами типа mov стоят прямые инструкции процессору. Компилятор транслирует мнемоники, немного упрощая жизнь программисту тем, что позволяет за той же мнемоникой mov спрятать несколько разных инструкций, предназначенных для переноса данных из разных типов операндов. Или позволяет написать макрос, который можно подставлять в определенное место программы, чтобы 100 раз не писать одно и то же и тд. Отвечая на вопрос что ниже ассемблера - писать код прямыми инструкциями процессора. И первое что ты так напишешь - простейший компилятор ассемблера, чтобы сэкономить время для написания более сложного компилятора :)
1011011011101101100111101101011110110100011101111011011101111011011101...
Ниже только перфокарты.)
@@Oktoberkun Еще ниже переключатели для задания последовательности битов
@@YuraSamusenko ещё ниже проводки и лампочки
А если по нашему mov приёмник, источник, но можно и так :)
Го топ самых необычных языков программирования (там какие нибудь Chiken и ёптаскрипт)
А почему бы и нет)
Я вас услышал
ёптаскрипт вроде компилирует в js, не?
@@user-bn5bm4gw4e ёптаскрипт это просто куча дефайнов, нет?
@@pain.6766 а чё
@@cattitude2 ?
На метаните есть курсы по ассемблерам.
Python не компилируется в ASM. С - не низкоуровневый.
Программа на ASM не выдает ошибку компиляции.
При компиляции: *мусор после выражения*
*мусор*
после компиляции не верно написанного кода: *ошибка сегментации*
C - низкоуровневый
@@noname-wn9xk C - язык программирования высокого уровня. ASM - язык программирования низкого уровня, так как существует в рамках конкретной аппаратной платформы.
И Python тоже язык программирования высокого уровня.
@@vas_._sfer6157, если С ставить вместе с ассемблером, то да, С - самый, самый, САМЫЙ высокоуровневый. Для меня сейчас С - очень даже высокоуровневый. А для тех, кто пишет на Python, Javascript и т.д., он низкоуровневый, так как там есть прямое обращение к памяти, вернее манипуляция с памятью, а в высокоуровневых нет
Ассемблер не такой уж сложный если изучать архитектуру под него, и если сравнивать с C++, да я на серьезе. C++ - это огромный язык, который имеет, хоть гибкий и удобный, но сложный в осваении инструментарий, к ассемблеру быстро прывыкаешь, потому что по масштабам он в десятки раз меньше плюсов, но естественно абстрактные идеи в ассемблере тяжело написать, нежели на плюсах
Вопрос: как у тебя в 1 байт влезло столько значений от -128 до 255?
Всего 256 значений
Это константное значение, в котором мы можем определить знаковый ли этот байт или беззнаковый. Логично, что если у нас есть знак, что мы резервируем первый бит под знак, и диапазон у нас от -128 до +127. Но мыж можем определить его и без знака, тогда диапазон у нас от 0 до 255
А вот если придумать нейронку которая будет шпарить код на асемблере и можно написать програму для контретного устройства проца и памяти озу например но вот большинство процов закрытые за исключение arm и risc v
Только говнокода на ассемблере нам не хватало
Топ 1 язык программирования для новичка:
Это язык от которого чувствуешь физическую боль.
👍👍👍
ты крутой чел я твой фанат
Пайтон же интерпретируемый язык программирования, а не компилируемый
Страшный сон питониста
Хорошее видео для людей, кто в детстве и юности кукарекали про потенциал кончолей и что оптимизацией игр под железо устаревшая на релизе лепёшка с вентилятором будет тянуть новинки минимум 8 лет.
Есть сиалетний преподаватель?
На 1 курсе мфти (хотя я физик) был ассемблер, это был ужас.
Нужно было запилить под ДОС
Я тот самый 100-летний препод из МФТИ. Задавайте вопросы
Есть ли жизнь на Марсе?
вы своё столетие в какой системе счисления отмечали?
@@anton__k😁
Я который отлично знаю с# и изучаю python: А что так можно было))?
Даже вывести одну букву на середину экрана и заставить мигать - это тонна текста
Чее то я нифига не понял, разве имена секций не в начале стоят?
Да и строку под меткой message надо было бы в секцию .data, как и код под меткой _start в секцию .text, а он слегка хуй знает как указал эти секции
Также питон: print(‘hello world’)
Также питон:*прошло десять дней* hello world
Ты допустил ошибку
C++: нужно сделать отдельный блок🤓
Python:всего лишь одна строка
Также HQ9+: H
@@Painkiller413HQ9+: всего лишь один символ.
Давайте по хардкору, змейка на ассемблере
На гитхабе уже повторяли 100 раз
привет первокурсникам итмо, почему ничего не понятно?
Вижу, ты смотришь комментарии)
В общем, хочу начать учить ASSемблер. Инфы в инете не найти, курсы быстро забрасываются, мало что объясняют, как вообще кодить на этом всём...
Хочу выучить низкоуровневый язык или даже несколько, чтоб с нуля написать ос без интерфейса по типу DOS. Знаю, что сложно, но я готов к такому.
В общем, подскажи, если сможешь, с чего можно этот проклятый язык изучать? По нему рил инфы не найти, как будто он мёртвым грузом лежит (хотя возможно так и есть, все же щас на высокоуровневых сидят)
Нам основы ассемблера преподают в вузе. Мне сложно подсказать какие-то определённые сайты, так как я их использую в основном для того чтобы дополнить информацию преподавателя
На сайтах вряд ли найдешь полный курс. Его обычно из книг преподают. Так что ищи, читай)
@@Pavel.Maslennikov спасибо
поищи туторы на английском, лично один такой сейчас смотрю но он 2-часовой) мозг инфу зажёвывает знатно, а всё что я хотел это заняться ромхакингом на гба (в целом даже попробовал себя в этом, но всё что я сделал это поковырял визуал, авось с изучением смогу менять карты)
проблема скорее всего в том, что производители процессоров неохотно делятся списками инструкций для своих процессоров. Если люди начнут сами себе ОС писать это же какой рынок рухнет. Правда в РФ его итак не было никогда )))
Ни__я не понял, но очень интересно
Лицо питонистов представили?
можно же просто сделать:
msg db "Hi"
len equ $ - msg ;Сколько тут байтов
section .text
_start:
mov rax, 4 ;Аккумулятор sys_write
mov rbx, 1 ;База stdout
mov rcx, msg ;Счетчик msg
mov rdx, len ;Размер байтов этого msg
syscall
mov rax, 1
syscall
И всё
Вопрос нахуя так делать когда можно просто
Print('Hello World!')
@@thezzzzzz можно ещё проще, H
вот менее костыльная версия на NASM с output через биос (тоесть это можно записать на диск вместо ос):
[org 0x7C00]
[bits 16]
mov ah,0x0E
start:
mov bx,message
call print
print:
pusha
printloop:
mov al,[bx]
cmp al,0
je end_print
int 0x10
inc bx
jmp printloop
end_print:
popa
ret
message db "Hallo!",0
times 510-($-$$) db 0
dw 0xAA55
А и ещё, я ассемблер использую только для bootload или других низкоуровневых приколов а так я пишу на c
ПРОШУ ЗАМЕТИТЬ НЕ НА C++ А НА C ЭТО РАЗНЫЕ ВЕЩИ!
@@mangrogred понимаю, как я не гуглю си, мне вечно подсовывают с++
Сделай подробное видео как установить ассемблер пж! Мне нравится этот язык, помогиииии
Надеюсь это просто шутка, а не реальный вопрос
Коротким получится, видео, там надо-то в командной строке написать дебуг и нажать энтер )))
Ирония в том, что я знал все термины, которые звучали в видео... Как будто на программирование у меня не ушло 4 года...
PS: Питонисты перевернулись в гробу.
Инфы по асму полно. И байт может принять значения от минус 127 до 128, а не 256. Но спасибо, доля правды в ролике есть.
неправильно! не знаешь" садись - два! )))
Байт может принимать значения в диапазоне 00h .. FFh или 0 .. 255
а целое вещественное число в байте это то что ты нарисовал )))
@@raal8438 Вы невнимательно смотрели ролик.
На 4-й минуте говорится о том, что байт может принимать значения от -128 до +255 вот ссылка - th-cam.com/video/00-hcWc7_fA/w-d-xo.html
Именно это я и имел в виду. И да будет Вам известно, что не только от 0 до 255 байт бывает, но и от -127 до +128, даже от -10 до +245, тут нет ограничений, это ассемблер. Каким захотите, таким и будет этот байт.
В ролике много ошибок, как то - С++ является по словам автора низкоуровневым.
Но смотреть приятно, вспоминают настоящие языки еще =)
Всем добра.
@@putman77 С++ по уровню такой же как С?
Ну вот смотри, и на Питоне, и Си++ можно: делать сайты, делать игры (2д и 3д), делать вычесления, страдать фигнёй, создавать нейронки, делать программы для ~роботов~ (ну типа языка Arduino). Отличия: Питон - лёгкий язык, но медленный, НО ЕСЛИ ЮЗАТЬ НУМБУ, ТО ПИТОН КАК СИ++ БУДЕТ ПО СКОРОСТИ!) Си++ - сложный язык, но быстрый изначально. Также, Си++ ОЧЕНЬ МЕГА СУПЕР ДУПЕР ПУПЕР МЕГА ТУПЕР ГИБКИЙ. Поэтому он ну ооочень сложный. Хотя по функциональности они примерно одинаковые. Но Си++ использует Анреал Энжин, а Питон юзает сам себя, так что... Да ваще насрать, изучай обы языка, их вообще совмещать можно, скачиваешь Cython и кайфуешь ат жизни нахер!!!!
@@putman77ну, от -10 до 245 это конечно бред) -127 - +128 это результат использования дополнительного кода числа, вида представления отрицательных чисел
Байт может принимать значения от -128 до 127, а не 255
unsinged byte будет принимать значения от 0 - 255. Все операции в компьютере выполняется в 16-ричной системе счисления и, если ты не знал, но отрицательное значение в данной системе существует как бы очень большим числом. А все регистры принимают только unsigned значения.
@@mhalaider6046шестнадцатеричная используется из-за ее удобного представления, чем двоичной или десятичной
@@user-ur3mc6hb5d логично, а к чему это ?
Тем временем питон: print(‘Hello World’)
Самое короткое - на shell-языке (и не надо дополнительно ничего устанавливать в систему): echo Hello World
@@anton__kмне кажется или шелл это не язык, а echo вполне себе самостоятельная программа, которая в виде бинарника лежит себе на диске?
Тем временем HQ9+: H
@@AXSMEBEL , возможно, зависит от реализации оболочки, но в Windows и Linux echo - это команда оболочки. Хотя в Linux и есть бинарник /bin/echo, в скриптах echo обрабатывается как встроенная команда.
@@anton__k если вы выполните в линуксе команду `which echo`, то внезапно увидите путь к бинарному файлу (скорее всего в /usr/bin)
После просмотра данного видео появилось желание повеситься.
Автору вагон конфет и цистерну чая😊
Только мне показалось что у автора какой то фреймворк похожий на asm ? И сама теория весьма запутано рассказана...
55:45
6:45 - почему вдруг строка "Hello World!" с символом перевода имеет длину 14 байтов (mov rdx, 14)?! 13 же! В этой программе такая неточность некритична (возможно, там нули из-за выравнивания), но вообще на экране может появиться "мусор".
Мб он ещё null terminator учёл (нулевой байт \0 в конце строки)
@@user-ir8nd6mj2b, а где там нулевой байт? Это ж не C/C++, где все строки автоматически заканчиваются нулём. Ассемблер всё "понимает" буквально.
Я думаю, этот фрагмент позаимстовавали из другой обучалки, где была запятая между словами, и там 14 было бы правильной длиной.
DOX BOX очь удобная ide для асемблера
Также пайтонисты: print("Hello, World!")
Также эзотерики: H
так ошибочка (4:20), не 255 (так как все значения в db, исключая ноль), а +127
байты со знаком в диапазоне от -128 до +127; беззнаковые байтовые значения в диапазоне от 0 до 255
@@PseudoDev тогда зочим такой странный диапазон указывать?
Но ведь мы можем указывать числа в этом диапазоне?)
А вот почему он такой странный... Ассемблер 🙃
@@PseudoDev Многие говорят, что асямбля ломает мозг, как раз наоборот, он его структурирует. И по этому я только на нем и пишу. Ну а так можно было бы разграничить эти два диапозона, а то с самого начала новечкам мозг не хочется домать :д
@@PianoElipse хмм. Не осуждаю, но странный выбор, как основного языка программирования:)
Как минимум из-за громоскости кода допустим для написания программы, которая перемножает многомерные матрицы, отделяя и сортируя числа по эквивалентности. Написать подобное на си, ну или на том же python(тут все решается подключением одной библиотеки) не составит труда, а вот на ассемблере ты потратишь не менее 500 строк кода в лучшем случае, написав пару "модулей" на том же ассемблере, формируя тот же самый "си", но под свои нужды.
Да, с тобой я полностью солидарен, что ассемблер структурирует мозг, порой после многих часов в IDA, я начинаю мыслить и делать все так же последовательно, а сверстники не могут понять, что со мной сегодня опять не так(гуманитарные предметы сразу же отходят на второй план, из-за невозможности нормально мыслить). Однако надо знать грань между одним и другим. Если нужна МАКСИМАЛЬНАЯ производительность, то стоит присмотреться к чистому си, без библиотек(некоторые библиотеки, написанные криворукими, могут выполняться по 1000 тактов на простое действие, которое можно было выполнить за 100 тактов), он ПРАКТИЧЕСКИ равносилен коду на ассемблере написанному от руки, ибо компиляторы нынче намного умнее, чем в те же 2000-ные и умеют оптимизировать в разы лучше, чем может написать человек.
Ассемблер создан для кирпичей и картошки
Когда вижу как печатают голубым по чёрному задаюсь вопросом - А гуманоид ли перед нами?? Или красным по чёрному. Короче я знаю как вычислять пришельцев с Нибиру. И не благодарите! ))
Print("Hello World")
это конечно ассемблер, только всю работу сделала операционка
Python не заточен на компиляцию он интерпритируемый язык программирования
Я думал что он превращается в китайский язык чтобы компуктер его прочитал, я охуел
@@Mr-Phokus ну уж теперь всё встало на свои места
Школота так и не освоила магию jit :-)))
Вот про диапазон байта бан.
Я с первых 15 секунд устал
А если я не ошибаюсь python интерпритируемый язык программирования
Верно:)
Но, в принципе, можно собрать "ехешник", только вот он будет громоздким, весить минимум 2мб(интерпретатор будет кочевать с программой в PE формате)
Вы ошибайтесь. Он превращается в китайский язык чтобы компуктер его понимал
Не братан, нет здесь прфесоров из МФТИ...
К вашему сведению, Си не является низкоуровневым ЯП. Это высокоуровневый ЯП с элементами низкоуровневого.
Элементы низкоуровневости позволяют точнее объяснить задачу компьютеру, тем самым делая более оптимизированный код?
@@CRITICALHITRU в принципе да, идёт упор больше на производительность. Низкоуровневые языки позволяют детально контролировать работу регистров процессора. Поэтому на Си и пишут драйверы и небольшие системные приложения. Хотя для сложных вычислительных процессов лучше использовать высокоуровневый яп.
Можно подумать - сдаешь экзамен! А подробно рассказать про компилятор и в каком редакторе пишешь программу? Здесь оценивают то что ты выкладываешь а не складно говорить и писать.
Чтобы получить работу, нужно пройти собеседование.
Смотри внимательно... точнее слушай.
Я оруууу.. видео топ
+ новые хакеры.
Их история началась как и все... С hello world, с помощью rax, 1.....
Kotlin, python и JavaScript - Это не не компилируемые языки программирования!
нет
Kotlin компилируется в байт-код для jvm. JS может как интерпретироваться, так и компилироваться при запуске(компиляция JIT(just in time)). Python в целом да, интерпретируется, но есть библиотеки, которые позволяют при запуске компилировать определенные фрагменты кода(полезно, когда эти самые фрагменты работают медленнее всего)
Си это тоже высокоуровневый язык.
Нет
@@noname-wn9xk для тебя нет.
Python не переводится в машинный код, он исполняется интерпретатором
А процессор как его понимает?
А теперь го не ассемблер, а сразу машинный код царапать на жестком диске
На перфоленте!
2:32
не знаю я привык работать на пайтон
Ленивым: 2:32
Емае бро ты так помог,мне так было лениво что ты меня спас,я хотел нажать на таймкод но случайно нажал на комментарий и решил в общем-то почему бы не оставить комментарий, спасибо!