код ASM и оптимизировать какие-то операции через регистры? Я не видел чтобы так кто-то делал, хотелось бы посмотреть
Реально, но там много чего можно делать и без ассемблера
Вряд ли много так напишегь, сейчас компиляторы хорошо оптимизируют, только если что-то конкретное.
да я понимаю. Я собираю все возможности. Ассемблер особенно привлекает - он может дать ускорение. Тот же язык Си переводится в ассемблер, но я не знаю как именно. С декомпиляторами и сборщиками не разобрался
Нет, не хорошо. Они создают килобайты мусора https://www.youtube.com/watch?v=fBXirr60yzM
Мусор в принципе можно сократить настройками. Но в целом компиляторы сейчас создают вполне быстрый код. Дело в том что современные процы имеют какие-то аппаратные оптимизации именно под типовой код компиляторов. И получается например что циклы с mov al, [esi] ; inc esi работают быстрее чем lodsb.
Тебя не спасёт, если ты будешь писать вставками на ассемблере. Компилятор вставляет свой стаб минимум на 10 килобайт, где проверки, инициализация и пр. Поэтому лучше напрямую писать на ассемблере, там никакого "мусора" не будет (и выбирать лучше без линковщика, потому что, если я не ошибаюсь, он тоже может добавлять что-то в код).
у меня код на асме вдвое быстрей работал чем на си. Но вот сложность кода на асме возросла в раз 10. И потом я совершил ошибку с регистрами, и не стал даже ее искать.
В моём понимании так: Си - это куча макросов для ассемблера и я должен мочь эти языки комбинировать как будто это одно и то же. В 32 бит есть in-line ASM, а вот в 64 у них что-то сломалось. А нету случайно IDE, направленной на создание БЫСТРЫХ программ? В чистом ASM фигово читаемый код, но почему бы не заменять его макросами? Я знаю про MASM (у него макро в названии), у меня его не получилось запустить. Он не работает из коробки как FASM, как его установить? Или он - не то что я хочу?
На gcc имеется конструкция встраиваемого ассемблера, только надо использовать грамотно
Не знаю как msvc, а gcc, ничего сверх необходимого не вставляет
Мне нужны примеры использования
В компиляторе для 64 бит майки выпилили вставки, остались только интринсики
Загугли gcc inline assembly
хорошо, попробую разобраться
Поверю, как только увижу пустую программу (return 0) на 1 килобайт, PE Win32 В идеале конечно даже меньше, ассемблер могёт на 700-900 байт, но для GCC и столько будет достаточно
Очень грубо называть компиляторы С — ассемблерными макросами. Нужно называть вещи своими именами, не просто так компилятор назван компилятором. IDE, направленной на создание БЫСТРЫХ программ? В чистом ASM фигово читаемый код, но почему бы не заменять его макросами? Я знаю про MASM (у него макро в названии), у меня его не получилось запустить. Он не работает из коробки как FASM, как его установить? Или он - не то что я хочу? Для MASM нужен линковщик, но там вроде уже в пакете идёт линковщик от Microsoft. И если тебе нужны макросы, то лучше подойдёт FASMG, хотя и сгодится обычный FASM. У него есть включения, которые помогают сделать синтаксис точь-в-точь С-шный
не, так не получится, я думал ты про то, что вставки код функций раздувают, но в принципе, можно использовать freestanding environment и только си без рантайма, тогда можно
Обсуждают сегодня