我想编译我的strlen_sse.asm
来完成一个函数strlen_sse
,它具有与strlen
相同的功能,但速度更快。我的代码如下:
.CODE
EQUAL_EACH = 00001000b
strlen_sse PROC
;ecx = string
mov eax, -16
mov edx, ecx
pxor xmm0, xmm0
STRLEN_LOOP:
add eax, 16
PcmpIstrI xmm0, dqword[edx+eax], EQUAL_EACH
jnz STRLEN_LOOP
add eax, ecx
ret
strlen_sse ENDP
END
图片命令行
是command line
的中文版。和输出
与Output
相同
当我构建项目时,我收到以下消息:
1> Performing Custom Build Tools
1> Microsoft (R) Macro Assembler (x64) Version 14.00.23026.0
1> Copyright (C) Microsoft Corporation. All rights reserved.
1>
1> Assembling: strlen_sse.asm
1>strlen_sse.asm(13): error A2006: undefined symbol : dqword
如何解决?
答案 0 :(得分:2)
我不确定id = 1448734444
是什么意思。我想你正在尝试使用用于其他汇编程序的汇编代码。我应该在masm中使用dqword
前缀作为128位大小的内存操作数。
以下是使用XMMWORD PTR
和ml.exe
编译的修改后的代码:
ml64.exe
注意:我不知道它是否正常工作。