如何解决GCM 乘法 ASM
我正在尝试实现 nist 800-38d here 第 6.3 节的算法
我在 asm 中有以下代码。我正在跟踪intel论文here第71页的以下向量测试。我的代码结果不同,我不知道我哪里错了,有人可以帮助我吗?
谢谢。
.section .text
.globl _start
.align 16
_start:
pxor %xmm0,%xmm0 # xmm0 | Z
movdqu %xmm1,(%rsp) # rsp | x
movdqu %xmm4,-16(%rsp) # rsp | V
_l02:
movq $-16,%rax # byte count
_l01:
xorq %r8,%r8 # bit count
movq $-8,%r9
_l0:
btq %r8,16(%rsp,%rax) # check the first bit
jnc _l1 # si el bit es 0,paso a LSB
movdqu -16(%rsp),%xmm3
pxor %xmm3,%xmm0 # si el bit es 1,Z xor V,paso a LSB
_l1:
btq $63,-8(%rsp) # check the 127 bit in V
jc _l2
movq -8(%rsp),%rbx
shlq $63,%rbx
shrq $1,-8(%rsp)
shrq $1,-16(%rsp) # LSB (V) = 0
orq %rbx,-16(%rsp)
jmp _l3
_l2:
movq -8(%rsp),-8(%rsp) # LSB (V) = 1
shrq $1,-16(%rsp)
orq %rbx,-16(%rsp)
xorq $0x00000000000000e1,-16(%rsp)
_l3:
incq %r8
incq %r9
js _l0
incq %rax
js _l01
# ret Z in xmm0 register
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。