所以我必须制作一个汇编函数来改变处理器对数字进行舍入的方式。我有那个。现在我需要证明一下。所以我需要将1个值写入屏幕,然后更改舍入方法,然后写入相同的值并检查它是否在最不重要的螳螂位上发生了变化。那我怎么能用IEEE 754格式写一个3.14值,如下所示:
0 10000000 10010001111010111000011
我的意思是函数可以printf
它或它可以返回它,所以我可以从C调用该函数。
答案 0 :(得分:1)
没有办法用printf输出二进制文件。如果你需要这样做,你必须编写自己的功能。这已经在SO上涵盖,例如here
如果你想分解浮点数的组件(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读取符号/尾数/指数。
答案 1 :(得分:0)
您可以使用FST指令将FPU注册表的值复制到内存中,使用MOV指令将其加载到CPU寄存器(C本地变量)中(假设您使用的是x86架构)
请记住,FPU寄存器有80位