Низкоуровневый АД: пшием ОС. Часть 2 — модули и ввод

Всем здрасте, и сегодня у нас продолжение низкоуровневого программирования. В этой части мы все разобьем на модули, а так же напишем ввод, благодаря чем мы сможем сделать маленькую командную оболочку! Дописывать ОС

https://habr.com/ru/articles/938544/

#операционные_системы #низкоуровневое_программирование

Низкоуровневый АД: пшием ОС. Часть 2 — модули и ввод

Всем здрасте, и сегодня у нас продолжение низкоуровневого программирования. В этой части мы все разобьем на модули, а так же напишем ввод, благодаря чем мы сможем сделать маленькую командную оболочку!...

Хабр

Низкоуровневый АД: пишем свою ОС — Часть 1. Загрузчик и стартовое ядро

Всем здрасте, и сегодня мы начнем наше прохождение через низкоуровневый кодинг - написание ОС. Сегодня мы напишем загрузчик (точнее конфиг к GRUB) и простенькое ядро, которое будет выводить "Hello OSDev!" Что нам понадобится: Сделать ОС

https://habr.com/ru/articles/938104/

#ос #низкоуровневое_программирование

Низкоуровневый АД: пишем свою ОС — Часть 1. Загрузчик и стартовое ядро

Всем здрасте, и сегодня мы начнем наше прохождение через низкоуровневый кодинг - написание ОС. Сегодня мы напишем загрузчик (точнее конфиг к GRUB) и простенькое ядро, которое будет выводить "Hello...

Хабр

[Перевод] Программа «Hello World» на машинном коде под DOS

Как-то раз я послушал следующее интересное выступление (по-немецки): https://media.ccc.de/v/ds24-394-linux-hello-world-nur-mit-einem-hex-editor В нём разобрано, как написать программу «hello world» для 64-разрядного дистрибутива Linux в шестнадцатеричном редакторе. Ассемблер здесь не используется, программа пишется непосредственно на машинном коде. Правда, в ней есть издержки на использование ELF . Мне понравилась такая идея, и я решил повторить такой опыт, но немного в иной форме – а именно, под 16-разрядной DOS в реальном режиме . У меня должен был получиться файл в формате COM , а не EXE , так как (на данном этапе) меня интересовал не столько формат файла, сколько кодировка инструкций. В вышеупомянутой лекции, если честно, не сообщается почти никаких подробностей о том, как именно перейти от ассемблерного кода к машинному — поскольку в случае разбора этих тем лекция, пожалуй, растянулась бы на несколько часов. Но здесь я всё разберу подробно, и при этом собираюсь пользоваться только документацией lntel , а также дизассемблировать код в целях верификации. Также мы коротко поговорим о сегментации . В качестве шестнадцатеричного редактора на этот раз воспользуемся hexedit .

https://habr.com/ru/articles/934032/

#ассемблер #helloworld #память #низкоуровневое_программирование #программирование #машинный_код

Linux "Hello World!" nur mit einem Hex Editor

media.ccc.de

[Перевод] Не стоит пугаться машинного кода

Моим первым языком программирования был ActionScript. Написание кода для Macromedia Flash максимально далеко от голого железа, и эта специфика работы глубоко засела в моём сознании. В результате меня интересовали преимущественно высокоуровневые языки для веб-программирования. Низкоуровневые же казались непостижимыми. Со временем я постепенно из разных источников узнавал о них всё больше, но это моё убеждение оставалось прежним. Низкоуровневые языки пугают, и машинный код подтверждал это наглядно. Когда я обращался к Google с запросом «понятный машинный код», то результат выдачи чаще представлял нечто пугающее и отталкивающее, нежели полезное для обучения. В конечном итоге я решил, что для достижения поставленных целей мне этот страх необходимо преодолеть. И результат приложенных усилий оказался для меня неожиданным. Машинный код вовсе не страшен. Если вы можете обеспечить, чтобы документ JSON соответствовал схеме JSON, то без проблем сможете писать машинный код.

https://habr.com/ru/companies/ruvds/articles/917202/

#Машинный_код #программирование #программирование_для_начинающих #assembler #низкоуровневое_программирование

Не стоит пугаться машинного кода

Моим первым языком программирования был ActionScript. Написание кода для Macromedia Flash максимально далеко от голого железа, и эта специфика работы глубоко засела в моём сознании. В результате меня...

Хабр

[Перевод] Не стоит пугаться машинного кода

Моим первым языком программирования был ActionScript. Написание кода для Macromedia Flash максимально далеко от голого железа, и эта специфика работы глубоко засела в моём сознании. В результате меня интересовали преимущественно высокоуровневые языки для веб-программирования. Низкоуровневые же казались непостижимыми. Со временем я постепенно из разных источников узнавал о них всё больше, но это моё убеждение оставалось прежним. Низкоуровневые языки пугают, и машинный код подтверждал это наглядно. Когда я обращался к Google с запросом «понятный машинный код», то результат выдачи чаще представлял нечто пугающее и отталкивающее, нежели полезное для обучения. В конечном итоге я решил, что для достижения поставленных целей мне этот страх необходимо преодолеть. И результат приложенных усилий оказался для меня неожиданным. Машинный код вовсе не страшен. Если вы можете обеспечить, чтобы документ JSON соответствовал схеме JSON, то без проблем сможете писать машинный код.

https://habr.com/ru/companies/ruvds/articles/917202/

#Машинный_код #программирование #программирование_для_начинающих #assembler #низкоуровневое_программирование

Не стоит пугаться машинного кода

Моим первым языком программирования был ActionScript. Написание кода для Macromedia Flash максимально далеко от голого железа, и эта специфика работы глубоко засела в моём сознании. В результате меня...

Хабр

Как устроен reflect.Value и что происходит, когда вы вызываете .Field(i)

Привет, Хабр! Сегодня разберём, как устроен reflect.Value изнутри и что на происходит, когда вы вызываете .Field(i) .

https://habr.com/ru/companies/otus/articles/913690/

#golang #низкоуровневое_программирование #работа_с_памятью_Go #отражение_в_Go #Go_reflection

Как устроен reflect.Value и что происходит, когда вы вызываете .Field(i)

Привет, Хабр! Сегодня разберём, как устроен reflect.Value изнутри и что на происходит, когда вы вызываете .Field(i) . Что прячется в reflect.Value — и как это связано с вашей памятью...

Хабр

Низкоуровневое программирование под 8086 для любопытных, часть 2

В этой части нас ждёт погружение в один из способов организации мультипоточности на базе единственного ядра процессора. Мы научимся принудительно переключать выполнение между полностью зацикленными участками кода, ничего не "знающими" о каком-то другом коде, конкурирующем за процессорное внимание. По ходу повествования будут даны все необходимые пояснения и читателю не придётся обращаться к другим источникам, кроме первой части статьи.

https://habr.com/ru/articles/907312/

#assembler #i8086 #низкоуровневое_программирование #agalilov #прерывания #стек #видеобуфер #ассемблер #ассемблер_для_начинающих #мультизадачность

Низкоуровневое программирование под 8086 для любопытных, часть 2

Длинное вступление Утренняя работа над второй частью статьи началось не с запаха кофе, а с запаха нафталина , толстым слоем покрывающего микропроцессоры эпохи конца 1970-х годов. В этой знаменитой...

Хабр

[Перевод] Как специально написать чрезвычайно медленный код

Раз в несколько лет я устраиваю в нашей исследовательской группе челлендж «Напиши медленный код». Цель – написать код с минимально работоспособным количеством инструкций на цикл (IPC) с условием, чтобы этот код выполнялся на заранее подобранном сервере с архитектурой x86. На первый взгляд, это абсурд! В сущности, так и есть. Однако, есть в этой безумной задаче и некоторая методическая ценность. Инженеры, проектирующие процессоры, прилагают все усилия ради достижения наивысшего возможного IPC… даже для очень неэффективного кода . Так и задумано, что писать код с очень высоким показателем IPC непросто . Следовательно, челлендж “Напиши медленный код” оказывается заковыристым упражнением, вынуждающим задумываться, как именно работает процессор, и как применить себе на пользу его острые углы.

https://habr.com/ru/articles/906144/

#ассемблер #x86 #производительность #челлендж #низкоуровневое_программирование

Как специально написать чрезвычайно медленный код

Раз в несколько лет я устраиваю в нашей исследовательской группе челлендж «Напиши медленный код». Цель – написать код с минимально работоспособным количеством инструкций на цикл (IPC) с условием,...

Хабр

[Перевод] Как специально написать чрезвычайно медленный код

Раз в несколько лет я устраиваю в нашей исследовательской группе челлендж «Напиши медленный код». Цель – написать код с минимально работоспособным количеством инструкций на цикл (IPC) с условием, чтобы этот код выполнялся на заранее подобранном сервере с архитектурой x86. На первый взгляд, это абсурд! В сущности, так и есть. Однако, есть в этой безумной задаче и некоторая методическая ценность. Инженеры, проектирующие процессоры, прилагают все усилия ради достижения наивысшего возможного IPC… даже для очень неэффективного кода . Так и задумано, что писать код с очень высоким показателем IPC непросто . Следовательно, челлендж “Напиши медленный код” оказывается заковыристым упражнением, вынуждающим задумываться, как именно работает процессор, и как применить себе на пользу его острые углы.

https://habr.com/ru/articles/906144/

#ассемблер #x86 #производительность #челлендж #низкоуровневое_программирование

Как специально написать чрезвычайно медленный код

Раз в несколько лет я устраиваю в нашей исследовательской группе челлендж «Напиши медленный код». Цель – написать код с минимально работоспособным количеством инструкций на цикл (IPC) с условием,...

Хабр

Низкоуровневое программирование под 8086 для любопытных, часть 1

В первой части мы: - посмотрим, как работать с памятью и регистрами 8086 - узнаем, как написать простую программу на ассемблере прямо в отладчике - изучим работу механизма прерываний и сделаем демонстрационный пример Статья рассчитана на тех, кто имеет начальный опыт программирования, но хочет понять основы низкоуровневого программирования и многозадачности. Примеры в бинарном виде доступны по ссылке https://github.com/galilov/habr/blob/main/asm-8086-galilov.zip .

https://habr.com/ru/articles/902412/

#Assembler #i8086 #низкоуровневое_программирование #agalilov #прерывания #стек #видеобуфер #регистры #ассемблер #ассемблер_для_начинающих

habr/asm-8086-galilov.zip at main · galilov/habr

Examples for habr articles. Contribute to galilov/habr development by creating an account on GitHub.

GitHub