Прошел ровно год с момента прошлой публикации и я подумал что первое апреля — отличный день для ежегодного дайджеста по моим трем безумным компьютерным проектам. В тот раз проект существовал только на бумаге, теперь же — определенно стал реальностью.
Подкатом звенящие релейные блоки, самые быстрые в мире вычисления на реле(но это не точно), монтаж накруткой, вакуумные индикаторы и моргающие светодиодики.
Рубрика «Brainfuck» - 2
Мои маленькие реле: Brainfuck компьютер — это реальность
2018-04-01 в 8:31, admin, рубрики: Brainfuck, brainfuckpc, diy или сделай сам, Настольные компьютеры, ПроцессорыМой первый компилятор на LLVM
2017-11-16 в 1:58, admin, рубрики: Brainfuck, c++, LLVM, open source, компилятор, КомпиляторыЭто руководство посвящено написанию простейшего компилятора на LLVM. Никакой предварительной подготовки не требуется.
Входным языком нашего компилятора будет BF. Это классический «игрушечный» язык для компиляторов, и даже есть компилятор BF в примерах к LLVM! В этом посте я приведу процесс написания компилятора с пояснениями.
Читать полностью »
Пишем x86-64 JIT-комплятор с нуля в стоковом Python
2017-11-15 в 5:29, admin, рубрики: Brainfuck, C, cpython, ctypes, forth, jit, PeachPy, python, x86, дизассемблер, компилятор, Компиляторы, машинный код, оптимизация кодаВ этой статье я покажу, как написать рудиментарный, нативный 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
2017-08-28 в 1:53, admin, рубрики: Brainfuck, LLVM, Lua, open source, terralang, Компиляторы, Программирование, язык terraTerra — низкоуровневый язык системного программмирования, встраиваемый и имеющий возможность метапрограммирования с помощью языка Lua.
Мои маленькие реле: Brainfuck компьютер это магия
2017-04-01 в 7:21, admin, рубрики: Brainfuck, diy или сделай сам, open source, Настольные компьютеры, реле, релейный компьютерВведение
Давным давно, когда вокруг все было большим, а я маленьким, читал я книгу Войцеховского «Радиоэлектронные игрушки», горя желанием воплотить в жизнь те или иные описанные в ней устройства. Так, в уже тоже далеком 2008-м году, из нескольких десятков электромагнитных реле было собрано 4-разрядное АЛУ (РЦВМ1 — Релейная Цифровая Вычислительная Машина — версия 1) способное складывать и вычитать. И задумал я тогда — а что если собрать существенно большее количество реле и построить полноценный релейный компьютер? На неспешную сборку реле то здесь то там до требуемого количества ушло всего 8 лет, и я начал творить.
Разрешите представить Вам свой проект по созданию второй версии релейной цифровой вычислительной машины, с кодовым названием «BrainfuckPC» — 16-разрядной компьютер с Фон-Неймановской архитектурой и набором инструкций для языка Brainfuck. Работы по проектированию завершены, и я в процессе изготовления сего монстра.
1 Технические характеристики
- Разрядность шины адреса: 16 бит
- Адресация: пословная, 16 бит/слово
- Емкость памяти: 64 килослова (128Кбайт)
- Разрядность шины данных: 16 бит
- Единое адресное пространство кода и данных (Архитектура Фон-Неймана)
- Тактовая частота (проектная): 100 Гц, 1 инструкция/такт
- Набор инструкций: Brainfuck++
- Количество реле (проектное): 792
- Используемые реле: герконовые, РЭС55(1п), РЭС64(1з)
Подробности подкатом
Ещё один Brainfuck интерпретатор
2017-02-11 в 16:13, admin, рубрики: Brainfuck, C, Алгоритмы, интерпретатор, оптимизацияBrainfuck — язык программирования, созданный с одной целью: написать для него интерпретатор. Их было написано так много, что даже не буду давать на них ссылки. В этой статье на пальцах объясняется простой, но эффективный способ его оптимизации.
VulnHub: Слепая эксплуатация и Брайнфак в DC416 Basement
2017-01-08 в 22:47, admin, рубрики: Brainfuck, ctf, defcon, exploit, information security, reverse engineering, vulnerability, vulnhub, информационная безопасность, реверс-инжиниринг
Продолжаем разбор CTF с конференции DefCon Toronto's. Задания предоставлены командой VulnHub, за что им огромное спасибо. А мы рассмотрим DC416 Basement.
Ниже, вы можете ознакомиться с предыдущим райтапом:
Текст, которого нет
2016-10-08 в 10:36, admin, рубрики: anquish, Brainfuck, invisible, Unicode, zwnj, информационная безопасность, ненормальное программированиеТекстовые редакторы, основная задача которых — отображение моноширинного шрифта (например, кода), должны, как и следует из названия, показывать символы одной ширины.
Не все языки программирования одинаково полезны
2016-09-07 в 14:47, admin, рубрики: Brainfuck, КодоБред, машинный код, ненормальное программирование, языки программирования
Каждый язык программирования хорош по-своему. Однако с этим утверждением согласятся не все. После прочтения следующего материала ряды несогласных могут пополниться. Более того, есть мнение, что некоторые «конструкции» вообще нельзя считать языками программирования.
По мнению «Википедии», язык программирования — формальная знаковая система, предназначенная для записи компьютерных программ. Язык программирования определяет набор лексических, синтаксических и семантических правил, определяющих внешний вид программы и действия, которые выполнит исполнитель под её управлением.
Какие-то знаковые системы проще для освоения, какие-то сложнее. Однако среди них есть и весьма причудливые. А есть настолько сложные, что осваивают их только самые хардкорные разработчики.Читать полностью »
Как я писал компилятор Brainfuck для RVM на С (RayFoundation)
2014-10-13 в 11:16, admin, рубрики: Brainfuck, RayFoundation, virtual machines, ненормальное программирование
Недавно, в целях исследования теории алгоритмов и машин Тьюринга у меня появилась идея написать свою простенькую виртуальную машину (далее ВМ), со своим байт-кодом, и маленьким языком программирования(ЯП). Основное применение ВМ – выполнение одной функции(например декодирование данных) запрограммированное в байт-коде функции.
Читать полностью »