您需要 登录 才可以下载或查看,没有账号?立即注册
MOVSD和MOVSL两个指令均是对字符串进行双字传送。两者的区别:Intel文档使用MOVSD传送双字,而GNU文档使用MOVSL传送双字。
例如:linux内核buffer.c中一段代码。
#define COPYBLK(from,to) \ __asm__("cld\n\t" \ "rep\n\t" \ "movsl\n\t" \ ::"c" (BLOCK_SIZE/4),"S" (from),"D" (to) \ :"cx","di","si")
这里的BLOCK_SIZE是一个逻辑块的大小,为1024字节。这里的嵌入汇编没有输出寄存器,输入寄存器分别是CX、SI、DI,改变的寄存器也是这三个寄存器。
还有一点,rep movsl和
rep
movsl
等价
使用道具 举报
本版积分规则 发表回复 回帖后跳转到最后一页
小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)
GMT+8, 2024-11-17 16:36
Powered by Discuz! X3.4
© 2001-2023 Discuz! Team.