从程序集中访问类方法
Posted
技术标签:
【中文标题】从程序集中访问类方法【英文标题】:Access to a class method from assembly 【发布时间】:2013-06-19 21:06:03 【问题描述】:我试图用 C++ 编写操作系统的基础。为了管理中断,我不得不编写一些 asm 行,它们使用在 asm 中声明的外部 C++ 代码 external name_of_the_function
。我将其中一个函数放在一个类中,但我不知道如何(external Class::method
不起作用)。我发现这样做的唯一方法是创建一个调用类方法的函数,但是是否可以从程序集中直接访问该方法? (假设这些方法是静态的)
【问题讨论】:
您可能想查找 name mangling:en.wikipedia.org/wiki/Name_mangling 看看 Agner Fog 的 calling conventions 指南。 【参考方案1】:-
查看您的 C++ 目标文件,找到您要调用的函数的错位符号名称。
在汇编文件中声明该错位函数名称
external
或 global
或您的汇编程序所需的任何语法。
像调用 C 函数一样调用它(如果是实例方法,您可能需要找到 this
指针)。
【讨论】:
3. (记得传递this
作为函数的第一个参数)
@Massa - 我认为我的回答已经说明了这一点。也许您看到的是缓存版本?除此之外,如果它是 OP 所说的静态(类)方法,则没有隐含的this
,是吗?以上是关于从程序集中访问类方法的主要内容,如果未能解决你的问题,请参考以下文章