为什么visual studio 2015在编译.asm时能解析dqword?

时间:2015-11-29 09:57:05

标签: visual-studio assembly sse

我想编译我的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

我已经设置了命令行和其他属性,如下图所示:enter image description here

图片命令行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

如何解决?

1 个答案:

答案 0 :(得分:2)

我不确定id = 1448734444是什么意思。我想你正在尝试使用用于其他汇编程序的汇编代码。我应该在masm中使用dqword前缀作为128位大小的内存操作数。

以下是使用XMMWORD PTRml.exe编译的修改后的代码:

ml64.exe

注意:我不知道它是否正常工作。