在程序集中以二进制形式显示浮点寄存器值



所以我必须创建一个汇编函数,这将改变处理器对数字进行舍入的方式。我有那个。现在我需要证明这一点。所以我需要将 1 个值写入屏幕,然后更改舍入方法,然后写入相同的值并检查它在最不重要的螳螂位上是否发生了变化。那么我如何以 IEEE 3.14 格式编写 754 值,如下所示:

0 10000000 10010001111010111000011

我的意思是函数可以printf它,也可以返回它,所以我可以从 C 调用该函数。

没有

办法用printf输出二进制文件。如果需要这样做,则必须编写自己的函数。这已经在 SO 中介绍过,例如 这里.

如果要分解浮点数的组件(IEEE 754 单精度(,则可以像这样使用联合:

union float_bits
{
   float f;
   struct bits
   {
      unsigned int s:1;
      unsigned int m:23;
      unsigned int e:8;
   } b;
};

然后,您将浮点数加载到 f 中,并从 b.s/b.m/b.e 读取符号/尾数/指数。

您可以使用

FST 指令将 FPU 注册表的值复制到内存中,使用 MOV 指令将其加载到 CPU 寄存器(C 局部变量(中(假设您在 x86 架构下(

请记住,FPU 寄存器有 80 位

最新更新