.NET/C# для начинающих (Часть 2 — Что такое .NET)

В предыдущей заметке я рассказывал, как написать на языке C# консольную программу HelloWorld и графическую программу на основе библиотеки WPF. Я сразу начал с программирования, так как мне не хотелось начинать рассказ о платформе .NET с голой теории… которую я и изложу очень кратко в настоящей заметке. Основным источником вдохновения для меня служила книга Jeffrey Richter — CLR via C# — 2012. Что такое .NET? Это платформа для разработки приложений, которая состоит из двух частей: виртуальная машина (Common Language Runtime Читать дальше …

.NET/C# для начинающих (Часть 1 — HelloWorld)

В этой заметке я расскажу, как построить две очень простые программы на платформе .NET. Первая программа будет консольная (Console User Interface — CUI), вторая — графическая (Graphical User Interface — GUI) на базе библиотеки Windows Presentation Foundation (WPF). Разговор о том, что вообще такое платформа .NET, отложим до следующей заметки. Средства разработки Вы можете установить графическую среду разработки Visual Studio, но я предпочитаю начинать изучение с по возможности самых низкоуровневых средств разработки, которые запускаются из командной строки, так как они, Читать дальше …

Изучаем архитектуру Intel x86-64 при помощи ассемблера (Часть 3 — Переход в защищенный режим)

В предыдущих заметках мы запускали программу HelloWorld на голом железе. Непосредственно после старта процессор x86 находится в т. н. реальном режиме работы процессора (real mode). Этот режим имеет следующие особенности: Режим 16-разрядный, т. е. длина машинного слова в нем равна 16 битам. 20-разрядный физический адрес памяти, что позволяет адресовать не более 1 мегабайта оперативной памяти. Сегментная адресация памяти: физический адрес = линейный адрес = segreg * 16 + offset, где физический адрес — это то число, которое выдается процессором на Читать дальше …

Консольная программа для Windows на языке ассемблера

В предыдущих заметках я начал писать программы, которые стартуют на ПК без операционной системы, будучи загруженными с дискеты. Программы эти я компилировал ассемблером flat assembler (FASM). В настоящей заметке мне захотелось сделать небольшое отступление и написать о том, как при помощи FASM можно писать программы пользовательского режима для Windows. Знание того, как это делается позволяет изучать программирование на ассемблере как таковое, не заморачиваясь написанием своей собственной операционной системы. Я преподаю студентам программирование на ассемблере Intel x86 с использованием компилятора Microsoft Читать дальше …

Изучаем архитектуру Intel x86-64 при помощи ассемблера (Часть 2 — Настройка проекта osdevlearning)

В предыдущей заметке я рассказывал о том, как написать на ассемблере программу HelloWorld, которая будет запускаться на голом железе (без операционной системы), как скомпилировать ее и записать образ загрузочной дискеты, и как заставить виртуальную машину загружаться с этой дискеты. Я собираюсь и дальше писать подобные программы. Каждая последующая программа будет делать что-то новое по сравнению с предыдущими. Но для начала я собираюсь немного систематизировать процесс разработки этих программ. Я создал удаленный репозиторий под названием osdevlearning. О том, как создать репозиторий, Читать дальше …

Изучаем архитектуру Intel x86-64 при помощи ассемблера (Часть 1 — Hello World на голом железе)

Я давно хотел научиться писать операционную систему или хотя бы попробовать эту задачу на зуб. Почему ОС начинают писать на языке ассемблера? Дело в том, что работа ОС обеспечивается определенными особенностями архитектуры процессора. Это, например, наличие нескольких уровней привилегий (режим ядра, режим пользователя), поддержка виртуальной памяти, поддержка многозадачности. Работа с этими особенностями архитектуры процессора подразумевает использование таких машинных команд и регистров процессора, о которых компиляторы высокоуровневых языков программирования (например C/C++) ничего не знают. Поэтому — ассемблер. В следующей серии заметок Читать дальше …

Git (Часть 2 — Cookbook)

В предыдущей заметке я создавал некий пустой проект и добавлял его в систему управления версиями Git. Здесь я приведу небольшую «cookbook» по работе с Git. Подробная информация про Git содержится в книге Scott Chacon and Ben Straub — Pro Git (Second Edition) — 2014. Справка по Git Аргументами утилиты git являются всякие команды (например git config, git diff и т. д.). Незаменимая команда для получения справки по командам утилиты git — это команда help. Например, чтобы получить справку по команде Читать дальше …

Git (Часть 1 — Введение)

В прошлых заметках я писал о создании блога на движке WordPress. У меня есть несколько учебных проектов, о которых я собираюсь написать. При этом желательно предоставить читателям полный исходный код, поэтому я создам открытый репозиторий на GitHub или BitBucket и установлю на свой ПК систему управления версиями Git. Чем хороша система управления версиями Хранение истории изменений проекта. возможность вернуться к той или иной версии, возможность создания ответвлений от генеральной линии развития проекта и пр. Это полезно в том числе, когда Читать дальше …