FPU数据寄存器
FPU有8個獨立的、可尋址的80位數據寄存器R0-R7,如下圖所示,這些寄存器合稱為寄存器棧。FPU 狀態字中名為 TOP 的一個 3 位字段給出了當前處于棧頂的寄存器編號。例如,在下圖中,TOP 等于二進制數 011,這表示現在棧頂為 R3。在編寫浮點指令時,這個位置也稱為 ST(0)(或簡寫為 ST)。最后一個寄存器為 ST(7)。
入棧操作
也稱為加載,將 TOP 減 1,并把操作數復制到標識為 ST(0) 的寄存器中。如果在入棧之前,TOP 等于 0,那么 TOP 就回繞到寄存器 R7。
出棧操作
也稱為保存,把 ST(0) 的數據復制到操作數,再將TOP加1。如果在出棧之前,TOP 等于 7,則 TOP 就回繞到寄存器 R0。
如果加載到堆棧的數值覆蓋了寄存器棧內原有的數據,就會產生一個浮點異常
下圖展示了數據 1.0 和 2.0 入棧后的堆棧情況。
注意:
- ST(0)總表示棧頂
總結
- 上一篇: 往日不再营币怎么获得
- 下一篇: 常用汇编浮点操作指令