Как создать сборку формата MASM из кода C - PullRequest
2 голосов
/ 14 февраля 2020

Я пишу программу C, и я хотел бы скомпилировать в сборку, внести изменения, а затем скомпилировать ее в исполняемый файл, используя ассемблер MASM, который входит в состав MSVS.

Я знаю, что сама MSVS позволяет выводить сборку из C программ, но я обнаружил, что эти выходные данные, кажется, добавляют или пропускают код таким образом, что MASM не может собрать их без существенной модификации.

Есть ли способ создать сборку в формате синтаксиса MASM из некоторого кода C, который я могу собрать с помощью MASM с минимальными изменениями или без изменений?

1 Ответ

0 голосов
/ 15 февраля 2020

Подумайте об этом так: когда вы используете MASM, вы используете совершенно другой язык, который, по совпадению, имел некоторые совпадения в коде сборки.

Вы можете попросить компилятор c показать вам сгенерированная сборка, но эта функция не предназначена для перекрестной установки кода сборки: это просто любезность, чтобы избежать хлопот, вызывающих дизассемблер, и вручную извлекать нужные биты.

The * Компилятор 1011 * предназначен для того, чтобы превратить ваш код c, а также многие функции, о которых вы даже не подозреваете, в какой-то машинный код, который выполняет то, что вы просите. Это означает, что сгенерированный код может включать в себя гораздо больше материала (например, помощников) и может быть связан с другими библиотеками (например, среда выполнения msv c), потому что это то, для чего предназначен компилятор msv c.

С другой стороны, если вы используете MASM, аудитория - это тот, кому требуется все контролировать. Таким образом, вы больше не пользуетесь возможностями и ограничениями языка и среды выполнения c.

Сказав это, если вам нужно сделать это, попробуйте сосредоточиться на использовании онлайн-сборки, если можете, как можете все еще используйте язык более высокого уровня, такой как c или c ++, сохраняя при этом возможность связываться с ассемблерным кодом, когда вам это нужно.

...