首页
社区
课程
招聘
[求助]汇编代码中字符串查找指令,用C如何实现?
发表于: 2006-6-3 21:04 4640

[求助]汇编代码中字符串查找指令,用C如何实现?

2006-6-3 21:04
4640
我在写1个内存补丁,先要在内存中查找特征字符串,用普通的for循环+比较判断做,觉得效率没有汇编中的 REPNE SCAS BYTE PTR ES:[EDI] 这样指令快
如果我想让VC编译出如下指令,等效的C代码该怎么写?

START:
MOV EDI, 开始地址
MOV ECX, 内存块大小
CLD
MOV AL, 第1个字符
CC:
REPNE SCAS BYTE PTR ES:[EDI]
JNZ EXIT
CMP BYTE PTR DS:[EDI], 第2个字符
JNZ CC
CMP BYTE PTR DS:[EDI], 第3个字符
JNZ CC
;
;这里是查找成功的处理
;

EXIT:
; 查询完毕后的处理

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

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 67
活跃值: (66)
能力值: ( LV7,RANK:100 )
在线值:
发帖
回帖
粉丝
2
strstr Find a substring
或者内联汇编吧
asm
{
MOV EDI, 开始地址
MOV ECX, 内存块大小
CLD
MOV AL, 第1个字符
CC:
REPNE SCAS BYTE PTR ES:[EDI]
JNZ EXIT
CMP BYTE PTR DS:[EDI], 第2个字符
JNZ CC
CMP BYTE PTR DS:[EDI], 第3个字符
JNZ CC
}
2006-6-3 22:15
0
雪    币: 231
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
饿 strstr 吗,特征字符串未必是以\0结尾的字符串 = =
我用过 strchr 那个,编译出来的代码不对
如果不能等效替换的话,也只能按你说的,内嵌汇编了 =0=
2006-6-3 23:56
0
雪    币: 873
活跃值: (3540)
能力值: ( LV7,RANK:140 )
在线值:
发帖
回帖
粉丝
4
memcmp也许可以做到
2006-6-4 10:40
0
雪    币: 231
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最初由 yeyeshun 发布
memcmp也许可以做到


= = 不对的吧
2006-6-4 16:36
0
游客
登录 | 注册 方可回帖
返回
//