汇编代码作为Visual Studio中内联汇编程序的参数

时间:2009-11-20 02:43:07

标签: visual-studio function assembly

我需要在Visual Studio中将汇编代码作为参数传递,因此有一个函数,例如:myasm(char * x),它将接受像“mov eax,eax \ n add eax,eax”这样的参数

不幸的是我无法使用GCC编译器来完成我正在做的事情。有没有办法在VS中做到这一点?

(注意:我传递的汇编代码是动态的,所以我无法预测它会是什么。)

2 个答案:

答案 0 :(得分:0)

你真的需要使用汇编程序吗?使用nanojit可能会更好。

否则,你当然可以这样做 - 但它不会很漂亮。您可以从代码中调用VisualStudio汇编程序ml.exe。您将获取指令,将它们写入具有定义唯一proc名称的适当头/尾的文件并将它们组装成dll,然后调用LoadLibrary()和GetProcAddress()以获取要调用的代码的地址,然后可以像任何其他函数指针一样调用。如果要获取特定指令的字节值,请使用标题/预告片中的偏移来计算出来。

See here了解如何使用asm文件配置项目。其中的所有内容都可以通过自己调用ml来动态完成。

答案 1 :(得分:0)

我认为事情有点困惑。内联汇编程序是编译器的一部分。听起来我觉得你想在编译器不再可用时在运行时组装代码。您是否看起来像LLVM之类的工具,它为可移植代码生成提供了运行时框架?或者,你可以运送和调用一个汇编程序(不是MSVC,它不允许像你那样重新分配,但可能是GNU gas或nasm)。