Мир изменился. Я чувствую это в воде, чувствую это в земле, ощущаю в воздухе.
«Властелин колец», Джон Рональд Руэл Толкин
Рубрика «x86» - 3
Обзор инструкций ARM NEON для тех, кто знаком с MMX-SSE-AVX
2021-03-31 в 7:16, admin, рубрики: avx, AVX2, neon, sse, x86, высокая производительность, обработка изображенийОбъяснение легковесных потоков в 200 строк на Rust
2021-02-18 в 16:52, admin, рубрики: Rust, x86, ассемблер, корутины, системное программированиеОбъяснение легковесных потоков в 200 строк на Rust
Легковесные потоки (ligthweight threads, coroutines, корутины, green threads) являются очень мощным механизмом в современных языках программирования. В этой статье Carl Fredrik Samson попытался реализовать рантайм для легковесных потоков на Раст, попутно объясняя, как они устроены "под капотом".
Так же следует учесть, что статья не суперсвежая, так что для того, чтобы примеры заработали в современной ночной версии компилятора Раст, скорее всего понадобятся изменения, найти которые можно в репозитории кода для этой статьи.
Переводил для себя большей частью. Обо всех замечаниях пишите — оперативно исправлю. Старался переводить близко к тексту, но в некоторых местах переформулировал, чтобы читалось легче и было понятнее.
Что означает RISC и CISC?
2021-02-14 в 7:00, admin, рубрики: cisc, RISC, x86, архитектура процессоров, Блог компании Selectel, Компьютерное железо, микропроцессор, Производство и разработка электроники, Процессоры, сравнение
Многие говорят, что разница между RISC и CISC стала несущественной. Так ли это? И если нет, то в чем разница между современными RISC и CISC процессорами?
Компания Apple выпустила процессор Apple Silicon M1, который произвел фурор. Теперь вы можете задаться вопросом, чем он отличается от процессоров Intel и AMD? Вероятно, вы слышали, что M1 — процессор с архитектурой ARM, а ARM — это RISC, в отличие от Intel и AMD.
Если вы читали про разницу между микропроцессорами RISC и CISC, то вы знаете, что множество людей утверждают об отсутствии практической разницы между ними в современном мире. Но так ли это на самом деле?
Читать полностью »
Вычисления без инструкций на x86
2020-12-16 в 12:35, admin, рубрики: red pill, x86, виртуализация, ненормальное программирование, низкоуровневое программирование, Процессоры, системное программирование, тьюринг-полнота, эзотерическое программирование
В этой статье обсуждается необычное применение особенностей защищённого режима архитектуры x86 — для произведения вычислений без исполнения инструкций, то есть за счёт внутренних механизмов процессора: аппаратного переключения задач, хитроумного управления памятью и нетривиальной логики Читать полностью »
ISA ошибок не прощает
2020-05-21 в 15:14, admin, рубрики: amd, intel, x86, Блог компании Huawei, высокая производительность, Процессоры–X86 – это исторически сложившееся недоразумение,– мэтр и в 80 не утратил полемического задора.
– Вообще-то ей принадлежит 95% серверного рынка, – вяло откликнулся я. Мне не хотелось вступать в спор на сто раз заезженную тему
– А я уже запутался в этих префиксах, — не унимался академик. – 15 байт на инструкцию, это немыслимо!
– Ну, не ice, конечно. Но у кого лучше-то?
– Да у кого угодно, хотя бы у ARM-a.
– Я все же не понимаю. Cложения с умножениями должны быть?
– Должны.
– И сдвиги c логическими операциями?
– Да.
– И загрузки с сохранениями тоже. Какая разница как они называются и кодируются?
Читать полностью »
Повышение производительности с использованием uop-кэша на Sandy Bridge+
2020-04-14 в 17:16, admin, рубрики: C, intel, performance, uop cache, x86, высокая производительностьВ современных x86 процессорах Intel, конвеер можно разделить на 2 части: Front End и Back End.
Front End отвечает за загрузку кода из памяти и его декодирование в микрооперации.
Back End отвечает за выполнение микроопераций, пришедших от Front End. Поскольку эти микрооперации могут выполняться ядром не по порядку, то Back End также следит за тем, чтобы результат выполнения этих микроопераций строго соответствовал порядку в котором они идут в коде.
В большинстве случаев не эффективное использование Front End'a не оказывает заметного влияние на производительность. Пиковая пропускная способность на большинстве процессоров Intel — 4 микрооперации за такт, поэтому, например, для Memory/L3-bound кода ЦПУ не сможет полностью ее утилизировать.
Однако в некоторых случаях различие в производительности может быть достаточно существенно. Под катом — анализ влияния кэша микроопераций на производительность.
Читать полностью »
И целого байта мало… (Часть #3)
2020-04-05 в 2:18, admin, рубрики: asm, demoscene, dos, intro, scene, x86, внезапно, галактеко безопасносте, ДемосценаИтак, друзья, 1-е апреля прошло, пора раскрывать карты, что же такое "2B or not 2B" на самом деле. Это совместный текст от автора работы jin_x и уже знакомого вам деда unbeliever
Обязательно скачайте архив с работой на Pouet и прочитайте вводную (первоапрельскую) статью, а так же комментарии к ней. Посмотрите первое видео с практической демонстрацией того, как работает код из «двух байт» на x86. И вот уже потом попробуйте осилить весь текст ниже.
Да, 2B or not 2B это действительно среда для запуска различных sizecoding-работ, очень простая и, пожалуй, самая маленькая из существующих. При этом, она имеет свои требования и ограничения.
Если кто-то ещё не уловил, тул 2b.com запускается из-под DOS (DOSBox, FreeDOS, MS-DOS) и осуществляет прыжок в область командной строки (по смещению $82* сегмента PSP), запуская на исполнение код, который передан в командной строке в двоичном виде. Собственно говоря, код этот вполне может иметь вид строки, которую можно набрать на клавиатуре (т.е. состоять из ASCII-символов с кодами от 33 до 126), но об этом немного позже.
Читать полностью »
И целого байта мало… (Часть #1)
2020-04-01 в 2:06, admin, рубрики: demoscene, x86, ассемблер (x86), ДемосценаДамы, господа, сегодня отличный день!
Скорее всего вы помните, что существует такая форма компьютерного искусства как «демосцена», но если слышите это слово впервые — просто прочитайте тематический хаб и теги на Хабре, а так же пару популярных статей по этому вопросу.
Одной из форм соревнования на демосцене является sizecoding — программирование визуальных эффектов в крайне ограниченном объеме машинного кода. Прежде чем мы перейдем к достижениям сегодняшнего дня (а они есть и более чем масштабные), давайте очень быстро пробежимся по наследию дедов. Все приведенные ниже работы сделаны в разные годы, объединяет их требование к платформе — PC, x86, DOS (никакого GPU, обычная видеокарта). В идеале вам стоит поставить DosBox и запускать каждую работу самостоятельно, благо авторы не особенно озадачиваются созданием видео и загрузкой его на YouTube. Мы постарались выбрать по одной показательной работе в каждой номинации.
Читать полностью »
IDA Pro и техники реверс-инжиниринга
2020-03-24 в 11:45, admin, рубрики: ida pro, x86, ассемблер, Блог компании ИНФОРИОН, реверс-инжиниринг0x00 start
; {EN} entry point, do nothing, just run _main {EN}
Статья для начинающих “воинов тьмы”, тех, кто хочет погрузиться в темную сторону силы: реверс-инжиниринг. На нашем “операционном столе” будет небольшой кустарный сервер, который работает по протоколу TCP/IP. Для анализа протокола обмена данными нам поможет стандарт де-факто в области реверса — IDA Pro.
Статей по реверс-инжинирингу и по IDA Pro уже написано немало (хотя и не столько, как по PHP), но поскольку процесс реверса — исследовательский, то мысли, как с "другого боку" подойти к задаче обратной разработки, полезны новичкам. По крайней мере, как автор, я руководствовался тем, чтобы изложить основные практики и техники, о которых говорю в первые дни всем стажерам и на первых парах курса по реверс-инжинирингу в университете.
Поиска уязвимостей и разработки эксплоитов для Google Chrome или Apple iPhone… Поэтому если вы исследователь со стажем и с большим количеством CVE на счету, маловероятно, что вы найдете для себя что-то новое.
"Once you start down the dark path, forever will it dominate your destiny".
ELFийские трюки в Go
2019-12-29 в 15:56, admin, рубрики: asm, debug, disasm, elf, Go, golang, x86, zydis, Компиляторы, ненормальное программирование, системное программированиеВ этой заметке мы научимся получать машинный код Go функции прямо в рантайме, распечатаем его с помощью дизассемблера и по пути узнаем несколько фокусов вроде получения адреса функции без её вызова.
Предупреждение: ничему полезному эта мини-статья вас не научит.