Расширяемый ассемблер X86-64 - PullRequest
0 голосов
/ 30 мая 2011

Я работаю над проектом, в рамках которого мы предлагаем архитектурные расширения для x86 / x86-64.У нас есть инструкции по сборке, определенные сейчас, и до этого момента мы жестко кодировали их в наши файлы C, используя такие выражения, как asm (". Byte 0x04");Проблема здесь в том, что это может быть утомительным и подверженным ошибкам.

Я ищу существующий ассемблер x86-64, где я могу легко определить новые инструкции.Я посмотрел на ГАЗ, но мне было немного трудно с ним работать.Это было разработано, чтобы быть быстрым, не расширяемым.Есть ли альтернативы, которые кто-нибудь может предложить?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 26 июля 2011

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

L1: bsf eax, ebx L2: орг L1 + 1 дБ 0BDH; заменить второй байт инструкции орг L2; вернуться к концу инструкции

Это изменит инструкцию bsf на инструкцию bsr с теми же операндами. Однако вы должны знать размер всех байтов префикса, чтобы поместить патч в нужное место.

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

2 голосов
/ 31 мая 2011

Любой макрос-ассемблер, такой как FASM , должен быть способен на то, что вы ищете.

Если вы хотите поддерживать свои инструкции "изначально", вам, вероятно, потребуется получить исходный коддля некоторого ассемблера и измените его генератор кода.

...