我需要将一个浮点数除以一个整数(在这个例子中为2): 所以我知道我可以通过以下方式实现这一目标:
n
但是有更优雅和不那么笨重的版本(我知道以下不起作用):
mov rax, 2
fild rax
fdivp st1
:如果不可能,请告诉我:)提前谢谢
答案 0 :(得分:4)
x87指令都不支持立即值。你需要做的是在一些内存位置存储你想要除的常量,然后使用内存操作数隐式加载它:
fdiv DWORD PTR two ; st0 = st0 / 2
...
two REAL4 2.0
请注意,除以常数后,可以通过乘以倒数来大幅加速:
fmul DWORD PTR two ; st0 = st0 * 0.5 = st0 / 2
...
two REAL4 0.5