3

我正在尝试运行从 GAS 样式中获取的指令,但是当我将此指令移植到 intel 样式时,出现如下错误:

"error: parser: instruction expected"

我尝试了各种组合,如 REP movsl、REP loadingl 但都给出了同样的问题,谁能告诉这个正确的命令相当于 x86 中的 REP stosl

4

2 回答 2

6

我相信它是

rep stosd

用于重复存储字符串 DWORD(32 位)。

(在具有ERMSB 功能的 CPU 上,效率很高,因此如果您有字节值而不是双字模式,则rep stosb无需imul eax, 0x01010101进行设置。)rep stosd

您可以在 Intel 指令集参考中stos_找到这些指令。它们使用1 字节、2 字节、4 字节和8 字节字符串操作的后缀。bwdq

/ /有一个单独的手动条目,repreperepne它记录了它有效的每条指令作为实际的重复前缀。

(但请注意,只有rep stos_andrep movs_有 Fast Strings 微码;所有有条件的 repe/ne cmps/scas 指令在现代 CPU 上都很慢,每 1 个甚至 2 个时钟只有 1 个计数。)

于 2013-07-09T12:52:35.857 回答
4

rep只是一个前缀,表示以下指令必须重复 (E)CX 次。不过,这仅对有限的指令集有效。实际指令是stos您的情况,它需要一个类型操作数。b对于字节,w对于字和d双字操作数大小。

在您的情况下d应该是正确的操作数大小。

于 2013-07-09T12:55:00.303 回答