Рубрика «Brainfuck» - 2

Мои маленькие реле: Brainfuck компьютер — это реальность - 1
Прошел ровно год с момента прошлой публикации и я подумал что первое апреля — отличный день для ежегодного дайджеста по моим трем безумным компьютерным проектам. В тот раз проект существовал только на бумаге, теперь же — определенно стал реальностью.
Подкатом звенящие релейные блоки, самые быстрые в мире вычисления на реле(но это не точно), монтаж накруткой, вакуумные индикаторы и моргающие светодиодики.

Читать полностью »

Это руководство посвящено написанию простейшего компилятора на LLVM. Никакой предварительной подготовки не требуется.

Мой первый компилятор на LLVM - 1

Входным языком нашего компилятора будет BF. Это классический «игрушечный» язык для компиляторов, и даже есть компилятор BF в примерах к LLVM! В этом посте я приведу процесс написания компилятора с пояснениями.
Читать полностью »

В этой статье я покажу, как написать рудиментарный, нативный x86-64 just-in-time компилятор (JIT) на CPython, используя только встроенные модули.

Код предназначен для UNIX-систем, таких как macOS и Linux, но его должно быть легко транслировать на другие системы, типа Windows. Весь код опубликован на github.com/cslarsen/minijit.

Цель — сгенерировать в рантайме новые версии нижеприведённого ассемблерного кода и выполнить их.

48 b8 ed ef be ad de  movabs $0xdeadbeefed, %rax
00 00 00
48 0f af c7           imul   %rdi,%rax
c3                    retq

В основном, мы будем иметь дело с левой частью кода — байтовой последовательностью 48 b8 ed ... и так далее. Эти 15 байтов в машинном коде составляют функцию x86-64, которая умножает свой аргумент на константу 0xdeadbeefed. На этапе JIT будут созданы функции с разными такими константами. Такая надуманная форма специализации должна продемонстрировать базовую механику JIT-компиляции.
Читать полностью »

Terra — низкоуровневый язык системного программмирования, встраиваемый и имеющий возможность метапрограммирования с помощью языка Lua.

Язык Terra — низкоуровневый партнёр Lua - 1

Читать полностью »

Введение

Давным давно, когда вокруг все было большим, а я маленьким, читал я книгу Войцеховского «Радиоэлектронные игрушки», горя желанием воплотить в жизнь те или иные описанные в ней устройства. Так, в уже тоже далеком 2008-м году, из нескольких десятков электромагнитных реле было собрано 4-разрядное АЛУ (РЦВМ1 — Релейная Цифровая Вычислительная Машина — версия 1) способное складывать и вычитать. И задумал я тогда — а что если собрать существенно большее количество реле и построить полноценный релейный компьютер? На неспешную сборку реле то здесь то там до требуемого количества ушло всего 8 лет, и я начал творить.

Разрешите представить Вам свой проект по созданию второй версии релейной цифровой вычислительной машины, с кодовым названием «BrainfuckPC» — 16-разрядной компьютер с Фон-Неймановской архитектурой и набором инструкций для языка Brainfuck. Работы по проектированию завершены, и я в процессе изготовления сего монстра.
Мои маленькие реле: Brainfuck компьютер это магия - 1

1 Технические характеристики

  • Разрядность шины адреса: 16 бит
  • Адресация: пословная, 16 бит/слово
  • Емкость памяти: 64 килослова (128Кбайт)
  • Разрядность шины данных: 16 бит
  • Единое адресное пространство кода и данных (Архитектура Фон-Неймана)
  • Тактовая частота (проектная): 100 Гц, 1 инструкция/такт
  • Набор инструкций: Brainfuck++
  • Количество реле (проектное): 792
  • Используемые реле: герконовые, РЭС55(1п), РЭС64(1з)

Подробности подкатом

Читать полностью »

Brainfuck — язык программирования, созданный с одной целью: написать для него интерпретатор. Их было написано так много, что даже не буду давать на них ссылки. В этой статье на пальцах объясняется простой, но эффективный способ его оптимизации.

quine

Читать полностью »

VulnHub: Слепая эксплуатация и Брайнфак в DC416 Basement - 1
Продолжаем разбор CTF с конференции DefCon Toronto's. Задания предоставлены командой VulnHub, за что им огромное спасибо. А мы рассмотрим DC416 Basement.
Ниже, вы можете ознакомиться с предыдущим райтапом:

Читать полностью »

Текстовые редакторы, основная задача которых — отображение моноширинного шрифта (например, кода), должны, как и следует из названия, показывать символы одной ширины.
invisible symbols in diff

Читать полностью »

Не все языки программирования одинаково полезны - 1

Каждый язык программирования хорош по-своему. Однако с этим утверждением согласятся не все. После прочтения следующего материала ряды несогласных могут пополниться. Более того, есть мнение, что некоторые «конструкции» вообще нельзя считать языками программирования.

По мнению «Википедии», язык программирования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель под её управлением.

Какие-то знаковые системы проще для освоения, какие-то сложнее. Однако среди них есть и весьма причудливые. А есть настолько сложные, что осваивают их только самые хардкорные разработчики.Читать полностью »

image
Недавно, в целях исследования теории алгоритмов и машин Тьюринга у меня появилась идея написать свою простенькую виртуальную машину (далее ВМ), со своим байт-кодом, и маленьким языком программирования(ЯП). Основное применение ВМ – выполнение одной функции(например декодирование данных) запрограммированное в байт-коде функции.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js