簡體   English   中英

在匯編中以二進制形式顯示浮點寄存器值

[英]Show a floating point register value in binary in assembly

因此,我必須創建一個匯編函數,該函數將改變處理器舍入數字的方式。 我有那個。 現在,我需要證明這一點。 因此,我需要將1個值寫入屏幕,然后更改舍入方法,然后寫入相同的值,並檢查它在最低有效螳螂位上是否已更改。 然后我該如何以IEEE 754格式編寫3.14值,如下所示:

0 10000000 10010001111010111000011

我的意思是該函數可以將其printf或返回它,因此我可以從C調用該函數。

沒有辦法用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中,然后從bs / bm / be中讀取符號/尾數/指數

您可以使用FST指令將FPU注冊表的值復制到內存,使用MOV指令將其加載到CPU寄存器(C局部變量)中(假設您使用的是x86架構)

請記住,FPU寄存器具有80位

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM