基本上我想用我的语言进行动态方法绑定。
我想要一个动态类型并调用相应的方法。我不确定如何在汇编中使用指向这些方法的指针,因为简单的标签在编译器中不再起作用,因为我们无法弄清楚对象的动态类型。 一个解决方案是引用方法指针所在的vtable,但我不知道如何做到这一点。 提前谢谢。
这是一个例子: 伪代码
class Main{
void main() {
A a;
a = new B(); //Dynamic type of is B
a.method(); //should call B's method()
}
}
class A{
method(){}
}
class B extends A{
method(){} //OVERRIDING
}
Pseudoassembly:
Main.main:
...
call POINTERTORIGHTMETHOD #### my proble, how can I ensure now (via vtables that I'm calling the right Method????
....
A.method:
....
....
B.method:
...