我正在尝试运行从 GAS 样式中获取的指令,但是当我将此指令移植到 intel 样式时,出现如下错误:
"error: parser: instruction expected"
我尝试了各种组合,如 REP movsl、REP loadingl 但都给出了同样的问题,谁能告诉这个正确的命令相当于 x86 中的 REP stosl
我正在尝试运行从 GAS 样式中获取的指令,但是当我将此指令移植到 intel 样式时,出现如下错误:
"error: parser: instruction expected"
我尝试了各种组合,如 REP movsl、REP loadingl 但都给出了同样的问题,谁能告诉这个正确的命令相当于 x86 中的 REP stosl
我相信它是
rep stosd
用于重复存储字符串 DWORD(32 位)。
(在具有ERMSB 功能的 CPU 上,效率很高,因此如果您有字节值而不是双字模式,则rep stosb
无需imul eax, 0x01010101
进行设置。)rep stosd
您可以在 Intel 指令集参考中stos_
找到这些指令。它们使用1 字节、2 字节、4 字节和8 字节字符串操作的后缀。b
w
d
q
/ /有一个单独的手动条目,rep
repe
repne
它记录了它有效的每条指令作为实际的重复前缀。
(但请注意,只有rep stos_
andrep movs_
有 Fast Strings 微码;所有有条件的 repe/ne cmps/scas 指令在现代 CPU 上都很慢,每 1 个甚至 2 个时钟只有 1 个计数。)
这rep
只是一个前缀,表示以下指令必须重复 (E)CX 次。不过,这仅对有限的指令集有效。实际指令是stos
您的情况,它需要一个类型操作数。b
对于字节,w
对于字和d
双字操作数大小。
在您的情况下d
应该是正确的操作数大小。