Assembler.

Кто угодно может пнуть мёртвого льва

Кто угодно может пнуть мёртвого льва. Мёртвый лев не рыкнет на наглеца. Мёртвый лев не откусит ему ногу «по самое не хочу», хотя стоило бы. Лев мёртв, и теперь его может пнуть каждый ишак, что конечно же не показывает превосходство ишака над львом. Эта статья будет полна негодования и ненависти. Кровь ещё не закончила кипеть от негодования. Но, разумеется, помимо эмоций будут и сухие объективные факты, немножко исследования и расстановка точек над i. В интернете кто-то не прав... опять...Существует целый ряд инструментов, технологий и вообще вещей, которым по какой-то непонятной вселенской несправедливости

продолжить чтение

«Отучаем» WinFXNet от жадности (часть 2 и заключительная)

Немного контекстаЭта заключительная часть данной серии (ссылка на первую часть) должна быть выйти раньше, но из-за многих факторов (об этом будет в конце статьи, если кому интересно) этого не произошло. Но звёзды сошлись и результаты экспериментов собраны здесь.В данной статье поясню, как я разбирался в работе файловой лицензии, как новая версия программы не поддалась мне с первого раза (поэтому в этот раз патч сделан по иной схеме, но лучше с моей точки зрения), а так же поговорим о экспериментах с живым HASP ключом.Disclaimer: Данная заметка написана в 

продолжить чтение

Ассемблер: рассматриваем каждый байт «Hello, World!». Как на самом деле работают программы на уровне процессора и ОС

❯ ГлоссарийАссемблер — программа, которая преобразует (транслирует) код, написанный на языке ассемблера в машинный код;Язык Ассемблера — низкоуровневый язык программирования, где машинный инструкции (числа) заменены на мнемоники (слова) для удобства человека.Программа — текстовый файл, который содержит в себе код на каком либо из языков программирования;Процесс — абстракция операционной системы, позволяющая следить и управлять ходом выполнения программы;❯ Введение: что будет в статье?

продолжить чтение

Барьеры памяти «Golang»

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

продолжить чтение

AsmX G3: Архитектура кодировщика ZGEN. Как hwm генерирует машинный код amd64

AsmX G3: Переосмысление взаимодействия с кремнием с нуля.Мы не просто создаем еще один компилятор. Мы переосмысливаем, как программное обеспечение взаимодействует с кремнием, исходя из первых принципов. Старые методы, основанные на громоздких, монолитных бэкендах, устарели. Они медленные, сложные в поддержке и непрозрачные. AsmX G3, с его компилятором ZGEN, меняет это.В этой статье мы погрузимся в ядро нашего подхода: как наш hwm (Hardware Machine Factory) — компонент, который является, по сути, автономным модулем, — транслирует человекочитаемый ассемблер в чистый машинный код x86_64

продолжить чтение

AsmX G3: Как работает ZGEN компилятор под капотом

ВведениеМы не просто обновляем инструменты, мы переосмысливаем сам процесс создания программного обеспечения. AsmX G3 — это не очередное инкрементальное улучшение. Это фундаментальный сдвиг. В этой статье я расскажу, как именно работает наш новый компилятор ZGEN, что находится под капотом и какие возможности это открывает. Мы рассмотрим архитектуру, новые фичи, которые всё ещё на стадии тестирования, и то, как мы решаем сложнейшие задачи компиляции. Добро пожаловать в будущее ассемблера.Режимы компиляции: Два пути к одной целиМой компилятор AsmX G3 предлагает два кардинально разных режима: JITC

продолжить чтение

AsmX G3: От высокоуровневого ассемблера к нативному коду. Разбираем компилятор ZGEN

ВведениеAsmX G3 — это наш ответ на избыточную сложность современного системного программирования. Это язык ассемблерного уровня, созданный для тех, кто требует полного контроля над железом, но не хочет жертвовать читаемостью и современными синтаксическими удобствами. Мы взяли мощь ассемблера и обернули её в синтаксис, который не вызывает желания выстрелить себе в ногу.Долгое время AsmX полагался на JIT-компиляцию — быстро, удобно, но не всегда достаточно для задач, где каждый такт процессора на счету. Для создания по-настояшему производительных, нативных приложений мы разработали ZGEN (Zero-latency Code Generation

продолжить чтение

ZX Spectrum проходит тест Тьюринга: учим 8-битный процессор решать CAPTCHA

Или как я потратила выходные на доказательство временного парадокса: Z80 1976 года решает CAPTCHA 2010-х в 2025 годуВступлениеПредставьте: вы открываете сундук и находите пыльный ZX Spectrum. «В музей Яндекса», — думаете вы. А что если я скажу, что эта железка с 48 килобайтами памяти может с 95.5% точностью распознавать рукописные цифры и проходить те самые CAPTCHA-тесты «Я не робот» из 2010-х?Более того: технически она могла это делать с момента выпуска в 1982 году. <cut />Временной парадокс в трёх актах1976: Рождение героя

продолжить чтение

Об ошибках округления и способах борьбы с ними

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

продолжить чтение

Зачем программисту дизассемблер в 2025: отладка на слепую под редкие MCU

Даже в 2025 году, когда вокруг нейросети, автогенерация кода и IDE с предиктивным интеллектом, работа с редкими микроконтроллерами всё ещё может обернуться настоящим хардкором. Особенно, если речь идёт о «слепой» отладке без отладчика, когда в арсенале только прошивка, HEX-файл и пара байтов на выводе. В этой статье — личный опыт, много хардкора, дизассемблирование вручную и поиск глюка в 2 КБ бинаря.

продолжить чтение

12
Rambler's Top100