first attempt to write inline ASM in C#, failed due to proteted ram

This commit is contained in:
Nitload
2023-04-22 03:40:36 +08:00
parent 906becc265
commit 1cb78e9e8f
78 changed files with 9595 additions and 56 deletions
+21
View File
@@ -0,0 +1,21 @@
.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