2009-06-20 812 views
7

這條指令到底做了什麼?我知道它試圖將數據與特定數字的倍數對齊,但爲什麼你需要這樣做呢?其他彙編器中是否有等效的指令?MIPS上的'align'指令

回答

9

您通常會調整數據以獲得更好的性能。對於大多數處理器來說,不訪問特定字節邊界時,存儲器訪問會受到一些懲罰對於其他彙編程序,爲此,通常會有某種pseudo-op.align。大多數編譯器也調整它們的數據結構(儘管可以爲了調試目的而禁用它)。

另請參閱此Wikipedia entry

請注意,如果嘗試訪問未對齊的內存單元,則非仿真MIPS系統甚至可能會崩潰(請參閱herehere)。

+0

感謝您在外部鏈接中的額外說明! – 2009-06-21 04:44:08

0

它對準一切的兩個n次冪。它不是一個指令,它的一個指令,將被翻譯成指令

至於它的使用情況,對exampe:

MIPS32指令通常是32位長。所以每條指令都應該從單詞邊界開始。在代碼開始之前添加.align指令,將事情對齊到32位。這有很多好處,包括它只需要1次內存訪問來獲取指令,並且它可能對指令高速緩存有利。

+0

如何在堆棧上存儲雙浮點數?它需要8個字節對齊嗎? – 2017-02-03 12:36:44