Assembler
-
Хабрахабр
Релейный компьютер, телетайп и интересный алгоритм игры в крестики-нолики
Крестики-нолики – классическая игра, которую наверное пытался написать каждый. При этом программы иногда получаются довольно запутанные, несмотря на простоту правил. Электромагнитные реле – классическая элементная база для компьютеров и калькуляторов. Они тёплые, ламповые и прикольно щёлкают. Если добавить к этому телетайп, то получится игровая консоль в стиле 1940х. Релейный компьютер Релейный компьютер я делаю уже давно. В нём 8 регистров…
Читать далее » -
Хабрахабр
Пишем микро-shellcode в формате ELF вручную
На Хабре уже не раз публиковались статьи про устройство формата ELF и написание файлов в таком формате вручную, но я не считаю лишним опубликовать и свой вариант решения этой задачи. В результате получился файл, вызывающий /bin/sh и занимающий всего 76 байт (что на 8 байт меньше, чем сумма длин заголовков ELF, необходимых для запуска). Постановка задачи Начну с того, откуда…
Читать далее » -
Хабрахабр
Немного об оптимизации кода путем «свертки»
Я очень люблю придумывать для компилятора, который сопровождаю, всякие приемы мелкой, или, как я ее называю, «тактической» оптимизации.В компиляторе при генерации кода имеется такой момент, когда большинство команд будущей программы (точнее, компилируемого модуля) уже сгенерировано, но их еще можно менять или выбрасывать, поскольку адреса команд переходов и вызовов еще не вычислены, а окончательный размер кода программы (точнее, этого модуля) еще…
Читать далее » -
Хабрахабр
[Перевод] В {n} раз быстрее Си
Иногда человек может обнаружить такие возможности оптимизации, которые не видит компилятор. В этой статье мы начнём с цикла, сгенерированного из кода Си с помощью clang, и скорректируем его разными способами, попутно измеряя прирост в скорости. Эта статья публиковалась на главной странице HackerNews, и к её обсуждению вы можете присоединиться здесь. Дисклеймер: я не эксперт по оптимизациям. По факту мой опыт…
Читать далее » -
Хабрахабр
Будущее программирования с помощью ИИ — первые примеры
Научно-техническая революция стимулирует спрос на вычисления. Последние полвека прогресс шёл в основном за счёт совершенствования железа. Но чипы приближаются к физическому пределу. Чтобы не снижать темпы развития, нужно улучшать программный код, повышая производительность вычислений. Требуют оптимизации в том числе базовые алгоритмы, такие как сортировка или хэширование, которые выполняются каждый день триллионы раз [1]. В то же время машинное обучение (нейросети)…
Читать далее » -
Хабрахабр
[Перевод] Мой первый супероптимизатор
Настало время для очередного бесполезного проекта. Возможно ли для любого отдельно взятого фрагмента кода найти абсолютно оптимальный вариант, который будет давать тот же вывод? Несколько лет назад я наткнулся на этот принцип, называемый супероптимизация. Он не практичен, но сама его идея засела у меня в голове. Смысл такой: сгенерировать все возможные пермутации инструкций кода и протестировать каждую полученную программу на…
Читать далее » -
Хабрахабр
Дизассемблер 6502 (nes/famicom/dendy) на php
<?php return [ '69' => [ 'ADC #$argument', 2 ], '65' => [ 'ADC $argument', 2 ], '75' => [ 'ADC $argument,X', 2 ], '6D' => [ 'ADC $argument', 3 ], '7D' => [ 'ADC $argument,X', 3 ], '79' => [ 'ADC $argument,Y', 3 ], '61' => [ 'ADC ($argument,X)', 2 ], '71' => [ 'ADC ($argument),Y', 2 ], '29'…
Читать далее » -
Хабрахабр
Зачем в Switch SDK три разных sin?
Работая в компании Gaijin несколько лет назад, мне довелось поучаствовать в портировании пары игр компании на консоль Nintendo Switch, тогда вовсю завоевывающую новые рынки. Для меня это стало первым крупным проектом на этой платформе. А с учетом, что ни команда, ни разработчик движка с платформой, системой сборки и вообще экосистемой Нинтендо знакомы не были, то все грабли приходилось искать и…
Читать далее » -
Хабрахабр
Альбом биперной музыки Ear Shaver и история его создания
Этой весной выпустил свой новый альбом биперной музыки для ZX Spectrum 48K — Ear Shaver. Послушать без дополнительных прелюдий можно в прикреплённом видео или на разнообразных музыкальных площадках. Отвступление Теперь нужно пояснить, что вы только что видели и слышали. В начале 1980-х годов компьютеры только начали шагать по планете и заходить в каждый дом. Чтобы завоевать массовый рынок, производители пытались…
Читать далее » -
Хабрахабр
Профилирование, ассемблер и все-все-все
Привет, сегодня будет объёмная и обстоятельная статья о низкоуровневом профилировании и диагностике производительности. Многократно в комментариях к докладам и статьям пользователи высказывали пожелание увидеть не просто перечисление шаблонов "как нужно" и "как не нужно", а целостную историю. Поэтому вот вам статья про конкретный кейс и его историю :). Не удивляйтесь, что начнём мы с JPA, хотя казалось бы где оно…
Читать далее »