|
这个汇编过程执行了什么操作
保存ebx/esi/edi寄存器 :00404CA4 53 push ebx :00404CA5 56 push esi :00404CA6 57 push edi :00404CA7 89C6 mov esi, eax ;第一个参数传esi :00404CA9 89D7 mov edi, edx ;第二个参数传edi :00404CAB 39D0 cmp eax, edx ;比较两个参数指针是否相等,相等则退出函数 :00404CAD 0F848F000000 je 00404D42 :00404CB3 85F6 test esi, esi ;测试第一个参数指针是否为nil :00404CB5 7468 je 00404D1F :00404CB7 85FF test edi, edi ;测试第二个参数指针是否为nil :00404CB9 746B je 00404D26 :00404CBB 8B46FC mov eax, dword ptr [esi-04] ;取第一个参数的String字符长度到eax :00404CBE 8B57FC mov edx, dword ptr [edi-04] ;取第二个参数的String字符长度到edx :00404CC1 29D0 sub eax, edx ;1和2的长度相减 :00404CC3 7702 ja 00404CC7 ;若eax > edx则跳出 :00404CC5 01C2 add edx, eax ;否则edx+eax |
|
这个汇编过程执行了什么操作
可能是Delphi程序,在取String字符的length |
|
汇编函数调用中bp和sp是指什么?
bp为基址寄存器,一般在函数中用来保存进入函数时的sp的栈顶基址 sp是栈顶指针,它每次指向栈顶。 每次子函数调用时,系统在开始时都会保存这个两个指针并在函数结束时恢复sp和bp的值。像下面这样: 在函数进入时: push bp //保存bp指针 mov bp,sp //将sp指针传给bp,此时bp指向sp的基地址。这个时候,如果该函数有参数,则[bp+4]则是该子函数的第一个参数,[bp+6]则是该子函数的第二个参数,以此类推,有多少个参数则[bp+4+2^n]。 ..... ..... 函数结束时: mov sp,bp //将原sp指针传回给sp pop bp //恢复原bp的值。 ret //退出子函数 |
|
|
|
VB6.0调用 VC++ dll 问题
没看到Dll有导出“Connect”这个过程。 |
操作理由
RANk
{{ user_info.golds == '' ? 0 : user_info.golds }}
雪币
{{ experience }}
课程经验
{{ score }}
学习收益
{{study_duration_fmt}}
学习时长
基本信息
荣誉称号:
{{ honorary_title }}
能力排名:
No.{{ rank_num }}
等 级:
LV{{ rank_lv-100 }}
活跃值:
在线值:
浏览人数:{{ visits }}
最近活跃:{{ last_active_time }}
注册时间:{{ user_info.create_date_jsonfmt }}
勋章
兑换勋章
证书
证书查询 >
能力值