Единый язык ассемблера - PullRequest
       36

Единый язык ассемблера

3 голосов
/ 16 апреля 2011

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

Я думаю о чем-то похожем на симулятор MARS MIPS (довольно простой и легко читаемый код), с возможностью создания реальных программ.Нет необходимости в библиотеках (но это хорошо, если это возможно), просто чтобы сделать вещи (библиотеки или UNIX-подобные инструменты) быстрее единообразным способом.

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

Ответы [ 4 ]

4 голосов
/ 16 апреля 2011

Во-первых: запись в сборке не гарантирует увеличение скорости.Использование правильного алгоритма для работы имеет наибольшее влияние на скорость.К тому времени, когда вам нужно перейти в Assembly, чтобы выжать несколько последних выпадений, вы действительно сможете сделать это, адаптировав алгоритм к конкретной архитектуре рассматриваемого оборудования.Универсальный HLA (High Level Assembler) в значительной степени отрицает цель написания вашего кода на ассемблере.Обратите внимание, что я не стучу Рэндалла Хайда HLA , который является отличным продуктом, я просто говорю, что вы ничего не получите от написания ассемблера, как компилятор генерирует машинный код,Большинство компиляторов C и C ++ имеют очень хорошие оптимизаторы и могут генерировать машинный код, превосходящий практически любую наивную реализацию в ASM.

Посмотрите, сможете ли вы найти эти книги (вторая рука, они вышли из печати) Майкла Абраша: "Дзен языка ассемблера" и "Дзен оптимизации кода".Или посмотрите, можете ли вы найти его статьи о DDJ.Они дадут вам непревзойденное понимание оптимизации

4 голосов
/ 16 апреля 2011

Байт-код JVM похож на ассемблер, но без арифметики с указателями. Тем не менее, это довольно объектно-ориентированный. С другой стороны, он полностью кроссплатформенный.

Возможно, вы захотите взглянуть на байт-код LLVM, но помните следующее предупреждение: http://llvm.org/docs/FAQ.html#can-i-compile-c-or-c-code-to-platform-independent-llvm-bitcode

2 голосов
/ 31 августа 2011

Связанные вещи, поэтому я надеюсь, что это может быть полезно:

Существует

с подходомсвоего рода портативного ассемблера.

Интересный проект операционной системы с графическим пользовательским интерфейсом, написанный на ассемблере, и великолепный API для ассемблера:

0 голосов
/ 09 февраля 2014

LLVM IR обеспечивает достаточно портативную сборку, опираясь на мощный компилятор, поддерживая многие проекты, включая Clang

...