能力值:
( LV2,RANK:10 )
|
-
-
2 楼
看上去是一个call 一个类的虚函数
R0 是 this
[R0] 是Vtable
R1指向第二个虚函数??
|
能力值:
( LV4,RANK:50 )
|
-
-
3 楼
Stream_getByte_0 ;//函数名
PUSH {R7,LR} ;//保存现场
LDR R0, [R0] ;//把参数1(R0)做地址,取其内容(4字节)赋给R0
LDR R1, [R0,#4] ;//把R0+4做地址取内容(4字节)赋给R1
BLX R1 ;//跟转到R1去执行代码(执行完后会返回到下一条命令)
POP {R7,PC} ;//本函数执行完毕,返回到调用处的下一条指令处
LSL R0, R0, #0 ;//调用上面函数时,将与这条命令无关
Stream_getByte ends
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
R1指向第二个虚函数??
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
typedef struct _aavt {
int addref( pthis)
int release( pthis)
} aavt;
struct aa {
aavt * pvt;
};
struct aa aObject;
main()
{
aObject.pvt->addref(aObject);
}
上面这个汇编就是对应上面main中的语句
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
虚表定义函数指针定义仓促中写错
typedef struct _aavt {
int (*addref)( pthis)
int (*release)( pthis)
} aavt;
|
|
|