首页
社区
课程
招聘
[求助][mtk]请教一段代码
发表于: 2009-8-25 23:04 5988

[求助][mtk]请教一段代码

2009-8-25 23:04
5988
小弟才疏学浅,分析到这个函数老是看不懂,求高人详细讲解下
mtk环境的

; Processor       : ARM
; Target assembler: Generic assembler for ARM
; Byte sex        : Little endian

------------------------

         AREA Stream_getByte, CODE, READWRITE
Stream_getByte_0
        PUSH    {R7,LR}
        LDR     R0, [R0]
        LDR     R1, [R0,#4]
        BLX     R1
        POP     {R7,PC}

        LSL     R0, R0, #0
Stream_getByte ends

------------------
其中ro 对应的的数据 指针 类似

             30 00 01 00 01 01 00 00 b0 00 00 00
02 00 b4 01 00 00 a4 00 00 00 03 00 58 02 00 00
....
....
....
....

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 251
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
看上去是一个call 一个类的虚函数
R0 是 this
[R0] 是Vtable
R1指向第二个虚函数??
2009-8-26 07:12
0
雪    币: 208
活跃值: (10)
能力值: ( 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
2009-8-27 13:02
0
雪    币: 100
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
R1指向第二个虚函数??
2009-9-5 20:56
0
雪    币: 201
活跃值: (10)
能力值: ( 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中的语句
2009-9-6 09:20
0
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
虚表定义函数指针定义仓促中写错
typedef struct _aavt {
int (*addref)( pthis)
int (*release)( pthis)
} aavt;
2009-9-6 09:22
0
游客
登录 | 注册 方可回帖
返回
//