Files
stgsharp/Math/Asm/test.asm
T

22 lines
608 B
NASM

.code ; 代码段
main proc frame
mov rax, 1235321532151111
mov rax, 0000000000000000
mov rax, 1111451111451111
sub rsp, 20h ; 分配32字节的栈空间,保证16字节对齐
mov rax,rsp
mov dword ptr [rax], 25 ; 将25存储在栈顶,作为p的低32位
movdqu xmm0, [rax] ; 将栈顶的16字节加载到xmm0,作为p的值
movdqu xmm1, [rax]
movdqu xmm1, [rsp]
sqrtss xmm0, xmm0 ; 计算xmm0的低32位的平方根,并存储在xmm1的低32位
movdqu [rax], xmm0
movdqu [rax], xmm1
movdqu [rsp+16], xmm1 ; 将xmm1的值存储在栈顶+16字节的位置,作为q的值
; 此时,q的值就在[rsp+16]处,可以用其他指令进行操作或返回
add rsp, 32 ; 恢复栈指针
.endprolog
ret
main endp
end