Возможно ли сгенерировать функции языка ассемблера из C-функций с помощью GCC, чтобы они могли быть вызваны из языковой программы ассемблера? Я знаю, что gcc компилирует C в машинный код (который можно легко разобрать на языке ассемблера), и я уже знаю, что это возможно inline assembly language functions in C, но я еще не нашел способ вызвать функции C из ассемблерных программ, в основном наоборот.Вызов функций C из языка ассемблера x86
Здесь я пытаюсь встроить функцию C в программу сборки x86. Если вложение невозможно, то есть ли другой способ вызвать функцию C из программы языка ассемблера?
.686p
.model flat,stdcall
.stack 2048
.data
.code
start:
invoke ExitProcess, 0
printSomething PROC ;now I'm attempting to inline a C function here
void printSomething(thingToPrint){
printf("This is a C function that I want to invoke from an assembly language program.");
printf("There must be some way to do this - is it possible somehow?");
}
printSomething ENDP
end start
Я не помню всех деталей, но вам просто нужно скомпилировать объектные файлы и связать их вместе. Вам просто нужно знать, какие вызовы используются при вызове функции. –
Вы можете добавить код сборки, показывающий, что вы пробовали, и сообщить, как он не может скомпилировать или как он ведет себя неправильно. Было бы намного легче ответить, чтобы указать, в чем проблема с ним. – hyde
Вы можете узнать, как это сделать, написав функцию C, вызывающую функцию, которую вы хотите вызвать, скомпилируете ее на язык ассемблера ('-S') и изучите результаты. Я также хотел бы указать вам на «psABI», но я больше не могу найти копию. – zwol