Все потоки
Поиск
Написать публикацию
Обновить
76.26

Assembler *

Язык программирования низкого уровня

Сначала показывать
Порог рейтинга
Уровень сложности

Как создать простую операционную систему с нуля

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров22K

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

Читать далее

Ассемблеры, 5 штук — быстрое знакомство для тех кто не знаком

Уровень сложностиПростой
Время на прочтение15 мин
Количество просмотров22K

Статья для тех кто не знаком с ассемблерами - но хочет взглянуть "одним глазком". Мы не сделаем вас гуру разработки на ассемблере за 15 минут - но покажем ассемблеры для нескольких популярных архитектур микроконтроллеров (ARM32, AVR, MSP430, 8051) - и для настольных наших компьютеров (x86 под Linux и DOS) - чтобы увидеть их различия и сходства - и не бояться погрузиться глубже, если что-то из этого может быть вам полезно.

Наша цель не призвать всех писать на ассемблере (ассемблерах!) - это не так уж сложно, но для большинства задач не очень практично. Цель именно познакомить! Чтобы было уже не страшно изредка заглянуть в потроха какой-то отладки - или сделать какую-то оптимизацию с ассемблерной вставкой - а может вы соберетесь написать компилятор или что-то в этом духе.

Бонусом - для любопытных - ассемблер для Intel-4004 - 4-разрядного процессора которому уже больше 50 лет. К нему будет также небольшой "интерактивчик".

Кто не боится - давайте посмотрим ближе!

Разбор JIT-Компилятора AsmX и краткая биография его создателя

Время на прочтение7 мин
Количество просмотров3.7K

На выходных я наткнулся на статью от комментатора, в которой был представлен  Обзор языка программирования AsmX. После прочтения этой статьи я решил поискать в Telegram диалоги создателя языка, к которым мы вернемся позже. Цитирую список пунктов от обзорщика Василия, с которыми я полностью согласен:

Читать далее

Разыменовываем NULL на RISC-V ядре scr1

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров4.6K

Во время работы в ASIC дизайн центре я потратил немало времени на отладку ошибок и падений ядра, просматривая временные диаграммы на шинах AXI от процессора к памяти. Иногда оказывалось, что адрес чтения из памяти оказывался 0x00000000 - классический случай разыменования нулевого указателя в C. На системах с ОС это приводит к известному всем C программистам segfault-у. И в bare metal системах разыменование NULL может приводить к интересным ситуациям. В этой статье рассмотрим, что происходит при разыменовании NULL, используя для пример open source RISC-V ядро scr1 и open source инструмент симуляции RTL Verilator.

Читать далее

Путешествие в мир эмуляторов микропроцессоров

Уровень сложностиСредний
Время на прочтение24 мин
Количество просмотров15K

Всем привет!

Не так давно на Хабре появился занятный пост о разработке процессора, и я понял, что созрел для своей первой статьи как раз в этом направлении.

Тема разработки эмуляторов олдскульных микропроцессоров типа того же Intel 8080 не нова. Если вы уже разбираетесь в вопросе, то для вас этот пост не будет чем-то новым, разве что вы увидите еще один подход к реализации такого проекта. Для тех, кто ничего об этом не слышал – прошу под кат.

Читать далее

Числа с фиксированной запятой для NES/DENDY

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров7.3K

Консоль Dendy в первую очередь ассоциируется с относительно простыми играми (Super Mario Bros, Duck Hunt, Battle City и т. д.), которые обычно не требуют сложных расчётов и обходятся целочисленной математикой. Но как только нужно сделать трёхмерную графику или сложную физику, сразу появляется потребность в точных вычислениях и дробных числах.

Самым простым и быстрым способом программного представления дробей являются числа с фиксированной запятой (Fixed‑point числа). О реализации такой арифметики для NES/Dendy мы и поговорим.

Читать далее

Quake на плате микроконтроллера с 276 килобайтами ОЗУ

Время на прочтение14 мин
Количество просмотров8.4K

Введение


В прошлом году в рамках празднования 30-летней годовщины Doom мы продемонстрировали его порт для платы Sparkfun Thing Plus Matter MGM240P. В этом году мы портируем Quake на плату Arduino Nano Matter.
Читать дальше →

Тетрис на ATtiny10

Уровень сложностиСложный
Время на прочтение4 мин
Количество просмотров12K

Решив использовать последние дни отпуска для приведения имеющихся у меня запасов электронных компанентов к некоторому подобию порядка я наткнулся на неизвестную михросхему SOT-23-6 с еле читаемой маркировкой.

Читать далее

Ассемблер для программистов на языках высокого уровня: условные конструкции

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров14K

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

На этом уроке мы изучим новые команды и воспользуемся этими знаниями, чтобы перенести на язык ассемблера первую конструкцию высокого уровня: условные конструкции.
Читать дальше →

Ассемблер для программистов на языках высокого уровня: Hello World

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров37K

Если вы начинали изучение программирования с JavaScript, Rust, C или любого другого высокоуровневого языка, то ассемблерный код может показаться вам непонятным или даже пугающим.

Рассмотрим следующий код:

section .data
  msg db "Hello, World!"

section .text
  global _start

_start:
  mov rax, 1
  mov rdi, 1
  mov rsi, msg
  mov rdx, 13
  syscall

  mov rax, 60
  mov rdi, 0
  syscall

К счастью, по второй строке мы можем понять, что он делает.

Здесь нет ничего привычного нам: мы не видим ни условных операторов, ни циклов, нет никакого способа создавать функции… Да даже у переменных нет имён!

С чего же вообще начать?

Это небольшое введение предназначено для того, чтобы познакомить имеющих опыт в программировании с миром ассемблера. Мы обсудим основы языка и сопоставим их с конструкциями высокоуровневого программирования.

Завершив прочтение этого руководства, вы сможете ориентироваться в ассемблерном коде, будете знать, где искать информацию, и даже сможете самостоятельно писать простые программы.
Читать дальше →

Знакомимся с трансляторами ассемблера для ПК

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров6K

Привет, Хабр! Сегодня я хочу поделиться своими наблюдениями и опытом по работе с различными ассемблерами. Я сам пишу на языке C и относительно редко касался темы ассемблера. Но недавно решил восполнить этот пробел в знаниях и посмотреть на различные ассемблеры. В данной статье мы не будем рассматривать ARM, AVR и другие микроконтроллерные архитектуры, а сосредоточимся исключительно на компьютерных ассемблерах. Давайте не будем судить строго, ведь это скорее исследовательский опыт, чем глубокое погружение.

Читать далее

Ещё слово о процедурной графике

Время на прочтение5 мин
Количество просмотров5.7K

Не так давно я публиковал здесь небольшой обзор по работам в жанре процедурной графики и, в частности, призывал поучаствовать в конкурсе. Упомянутый мной конкурс на фестивале Chaos Constructions состоялся - было представлено семь работ размером до 1кб, о которых, особенно о двух собственного изготовления, я и хочу рассказать.

Первая работа называется Way и написана для платформы Sony Playstation 1 (PSX) на ассемблере MIPS R3000.

Читать далее

Симкод — современный язык ассемблера

Время на прочтение33 мин
Количество просмотров18K

Начну с определений.

Симкод — это последовательность симкоманд.

Симкоманда — это символьная машинная макрокоманда с Си-подобным синтаксисом.

Например, ассемблерной команде add rax, rbx соответствует симкоманда rax += rbx.

Симкод позволяет выразить любой ассемблерный код [и как следствие машинный], только в более человекочитаемом виде. Однако, симкод не пытается назначить символьное обозначение для абсолютно каждой ассемблерной команды — те команды ассемблера, которые не имеют символьной записи, оставляются как есть. Таким образом, симкод является надмножеством ассемблера.
Читать дальше →

Ближайшие события

Райтап на таск «Крестики» с Codeby Games | CTF, реверс-инжиниринг

Уровень сложностиСредний
Время на прочтение6 мин
Количество просмотров2.1K

Хотели порешать эти ваши реверс-инжиниринги на CTF? Да ещё и на C++ с Windows Forms? К тому же чтобы он был не сложным и в райтапе были объяснения? Тогда вам сюда 😉

Ссылка на задание (файлы): нажми на меня :)

Читать далее

Linux Pipes – медленные

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров13K

Я пишу программу для сверхбыстрого кодирования/декодирования азбуки Морзе и использую pipe для передачи данных. При этом pipe работает очень медленно. Давайте разберемся почему.

Читать далее

Работа с файлами в ОС CP/M на компьютере «Profi»

Уровень сложностиСредний
Время на прочтение18 мин
Количество просмотров1.8K

В предыдущий раз пришлось уделить внимание и бегло рассмотреть работу с файлами в ОС CP/M. А так как «Быстро, хорошо не бывает» (с) было приято решение о необходимости подробного и основательного разбора данного вопроса, так что бы в будущих статьях не тратить на него время и место.

Статья была опубликована в 2020 году в 28 номере журнала по ZX Spectrum'у "ЗаRulem Печатное Слово".

Статья написана в соавторстве с Вадимом Чертковым.

Читать далее

Простой советский геймдев: многокадровый, цветной

Уровень сложностиСредний
Время на прочтение27 мин
Количество просмотров18K

Около года назад, в одной из прошлых своих публикаций, я уже вскользь касался темы самой совершенной советской видеоигровой аркадной платформы, ТИА-МЦ1. Недавно поступило предложение рассказать про это поподробнее: какое я имею к ней отношение, как и когда удалось создать её эмулятор для современных ПК, как она устроена, в конце концов. Приступаем!
Читать дальше →

Расширенный экран «Profi», что это такое и как с ним работать. Практикум 001. Загрузка картинки. GRF

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров1.8K

Продолжение цикла статей по работе с расширенным экраном компьютера "Profi". Первый практикум.

С чего начинается изучение нового? Правильно с "базы". Как правило база - это загрузка и простейший вывод тестовой информации. По этому и тут начнём с загрузки и вывода картинки. Научимся не только выводить данные на экран, но и читать их с носителей.

Статья была опубликована в 2019 году в 26 номере журнала по ZX Spectrum'у "ЗаRulem Печатное Слово".

Статья написана в соавторстве с Вадимом Чертковым.

Читать далее

Расширенный экран «Profi», что это такое и как с ним работать. Часть вторая

Уровень сложностиСредний
Время на прочтение13 мин
Количество просмотров3K

Продолжение статьи по работе с расширенным экраном компьютера "Profi" опубликованной в 2003 году 16 номере в газете "Абзац". Информация значительно переработана и дополнена, в том числе примерами программирования.

Статья была опубликована в 2019 году в 25 номере журнала по ZX Spectrum'у "ЗаRulem Печатное Слово".

Статья написана в соавторстве с Вадимом Чертковым.

Читать далее

Расширенный экран «Profi», что это такое и как с ним работать. Взгляд из 2003 года

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3K

Данная статья написана в 2003 году для газеты «Абзац» и была опубликована в 16 номере. Это моя первая статья на тему расширенного экрана компьютера «Profi».

Читать далее