今天写完Assembly的小tips

本文介绍了一种将浮点数3.14直接存入汇编语言 xmm 寄存器的方法,避免了手动转换的过程。此外,还讨论了在 asm 中调用 C 函数(例如 printf 和 scanf)时,如何管理 xmm 寄存器以防止意外覆盖关键数据。

套用一句安德罗妮的话,一些小tips:

1. 这段只是简单的把一个float num 存进 一个SEE 的xmmregister 中。这种方法可以不用人工转换,第一句起到了和 mov    rax,0x400921fb54442d18一样的作用

mov        rax, __float64__(3.14)                           ; move a 64 bit float 3.14 into rax   
push       rax                                                         ; push rax to stack
movsd      xmm10, [rsp]                                       ; move the 3.14 into xmm10
pop        rax        


http://www.nasm.us/doc/nasmdoc3.html


2. 当在asm中使用c的function列如 printf 和 scanf 非常容易吧前10个 xmm registers 清空,所以如果有重要数据尽量从后面的xmm register开始存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值