catch 发表于 2013-12-15 09:58:23

汇编指令MOVSD和MOVSL

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和repmovsl等价
页: [1]
查看完整版本: 汇编指令MOVSD和MOVSL