Есть ли компиляторы ASM? - PullRequest
       5

Есть ли компиляторы ASM?

1 голос
/ 09 декабря 2010

Я знаю, что ASM обычно проходит через ассемблер и приводит к более или менее однозначному отображению в конечный двоичный файл, но я не об этом думаю.

Кто-нибудь делает инструмент, который рассматривает ASM (или объектные файлы) как согласованный язык, на котором он может выполнять полную гамму оптимизаций? Хотя такой инструмент может быть не особенно полезным Само собой, это может делать такие вещи, как встраивание функций из статических библиотек с закрытым исходным кодом.

Ответы [ 4 ]

3 голосов
/ 09 декабря 2010

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

Существуют инструменты для ассемблера, которые позволяют вам определять макросы или регистры для вас, но все, что более продвинуто, будет считаться компилятором, а его ввод больше не будет языком ассемблера.

2 голосов
/ 09 декабря 2010

хотя я согласен с ответом travelboy в том, что любой такой язык «скомпилированной сборки» больше не будет ассемблером, я должен упомянуть, что существуют «перекомпиляторы» и JIT, исходный язык которых - машинный язык(даже не сборка).

Эти программы берут кучу исполняемого кода, обычно уже загруженного и готового к выполнению, и преобразуют его, распознавая различные конструкции и заменяя их на разные версии, что может быть лучше, быстрее, безопаснее или просто по-другому.

QEMU является примером этого.В своем первоначальном виде это эмулятор ЦП, который работает путем перекомпиляции из заданного двоичного файла ЦП в другой ЦП для выполнения ( Двоичный перевод ).Но он также может работать, когда оба ЦП одинаковы, в этом случае преобразование позволяет выполнять привилегированный код в среде виртуальных машин путем «взлома» аппаратного эмулятора.

A очень Интересным примером является HP Dynamo ( старая статья Ars Technica ), исследовательская программа, которая достигла неожиданного ускорения путем перекомпиляции двоичных файлов HP PA-8000.

0 голосов
/ 09 декабря 2010

Когда DEC осуществил переход от архитектуры VAX к AlphaAXP, их ассемблер MACRO32 стал своего рода компилятором языка высокого уровня, ориентированным на Alpha. AFAIR, были некоторые оптимизации.

http://en.wikipedia.org/wiki/VAX_Macro

0 голосов
/ 09 декабря 2010

Я верю, что вы ищете язык Искусства Ассамблеи: http://homepage.mac.com/randyhyde/webster.cs.ucr.edu/index.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...