Главная » Архив меток: Assembler

Архив меток: Assembler

Особенности вызова функций в С++

В результате возникла данная статья. Не так давно у меня произошёл очередной разговор с коллегой на извечную тему: "по ссылке, или по значению". Далее будут рассмотрены: В ней я хочу изложить результаты моего исследования по этой и смежным темам. Регистры и их назначение при вызове функций. Передача и возврат простых типов и структур. Как передача по ссылке и по значению ...

Читать далее »

[Из песочницы] Неканонический режим терминала и неблокирующий ввод на nasm

Идея написания игры на языке ассемблера, конечно, вряд ли придёт кому-то в голову сама собой, однако именно такая изощренная форма отчетности уже долгое время практикуется на первом курсе ВМК МГУ. Но так как прогресс не стоит на месте, то и DOS, и masm становятся историей, а nasm и Linux выходят на первый план подготовки бакалавров. Возможно, лет через десять руководство ...

Читать далее »

Go 1.11: AVX-512 со вкусом Go

11 значительно обновлён ассемблер под платформу x86. В Go 1. У программистов появится возможность использовать AVX-512 — новейшие инструкции, доступные в процессорах Intel. Под катом: Самые значительные обновления в cmd/asm (go tool asm) Как был внедрён новый набор инструкций в Go ассемблер Использование новых инструкций и специальных возможностей EVEX префикса Уровень интеграции в тулчейн (рецепты обхождения текущих ограничений) Из видимого ...

Читать далее »

К вопросу об AVR и мировых рекордах

Делай хорошо, плохо само получится Поводом к посту послужила недавняя (когда я начинал писать этот пост, она действительно была недавней, но что-то пост долго пролежал в папке Неоконченное) публикация на Хабре относительно аспектов реализации программного UART на МК фирмы AVR. Сами по себе поднятые вопросы небезынтересны, но даны на них столь странные ответы, что посчитал своим долгом внести необходимые разъяснения. ...

Читать далее »

[Перевод] Как собрать досовский COM-файл компилятором GCC

Статья опубликована 9 декабря 2014 годаОбновление от 2018 года: RenéRebe сделал на базе этой статьи интересное видео (часть 2) Но даже до объявления тем конференции из-за своего недавнего увлечения я хотел сделать олдскульную игру под DOS. В минувшие выходные я участвовал в Ludum Dare #31. Это самый практичный способ запуска DOS-приложений несмотря на то, что все современные процессоры x86 полностью ...

Читать далее »

Снова EA, снова NFS, снова баги. Чиним

Привет, Хабр! С вами снова спидраннинг коммьюнити NFS. И мы снова чиним старенькую игрушку — NFS Most Wanted. Я уже рассказывал о починке багов в своих предыдущихстатьях, а сегодня хотел был пойти с вами немного глубже в дебри дизассемблирования. Заинтересовавшихся прошу под кат. Предыстория Когда-то давно, когда EA издавала хорошие NFS, вышла одна из известнейших гоночных игр — Most Wanted. ...

Читать далее »

[Перевод] 8088 MPH: мы сломаем все ваши эмуляторы

Одним из пунктов списка моих желаний после прочтения первого отчета с пати в 1991 году стало посещение европейской демопати и участие в соревнованиях compo. Я участвовал в NAID ’96 и даже занял там место, но моей мечтой всегда было соревноваться с лучшими из лучших. Я рад объявить о том, что спустя шесть месяцев упорной работы с хорошими друзьями и невероятно ...

Читать далее »

Go: ускоряем выборку больших таблиц из MySQL

Я использую Go для написания рекламной сети вот уже почти год. Разработку веду на сервере Intel i7-7700, 16Gb RAM, 256Gb SSD. И в скрипте который выполняется раз в сутки появилась задача выбрать все показы за прошедшие сутки и пересчитать на этой основе статистику за день сразу по нескольким объектам (сайт, кампания, баннер). По идиомам Go делается всё достаточно тривиально: type ...

Читать далее »

[Перевод] Руководство по ассемблеру Go

Надеюсь, это руководство поможет вам быстро овладеть нужными знаниями.Содержание Прежде чем заняться реализацией runtime и изучением стандартной библиотеки, необходимо освоить абстрактный ассемблер Go. Эта статья подразумевает, что у читателей есть базовые знания об ассемблере любого вида. Когда речь будет идти об относящихся к архитектуре вопросах, всегда подразумевается использование linux/amd64. Мы всегда будем работать с включёнными оптимизациями компилятора. Все цитаты взяты ...

Читать далее »

Операционные системы с нуля; уровень 3 (младшая половина)

Т.е. В этой лабе мы будем реализовывать возможность запуска пользовательских программ. В начале разберёмся как переключаться из привилегированного кода, как переключать контексты процессов. процессы и всю зависимую инфраструктуру. В конце концов выведем наш шелл из пространства ядра в пространство пользователя. Затем реализуем простенький round-robin планировщик, системные вызовы и управление виртуальной памятью. оригинал Нулевая лаба Первая лаба: младшая половина и старшая ...

Читать далее »