我一直致力於通過gcc生成的一些不同的arm彙編代碼進行閱讀,並且我遇到了一些我在規範中找不到的東西。ARM組裝中奇怪的立即值
movw r0, #39784
movt r0, 1
顯然,第一個是價值39784移動進入底部16位或R0,而是「1」 MOVT的操作數是奇數,因爲它不前,它有亂碼,我的印象是,立即下值需要散列。在某些情況下它是否可選?或者我錯過了一些神奇的東西?
我一直致力於通過gcc生成的一些不同的arm彙編代碼進行閱讀,並且我遇到了一些我在規範中找不到的東西。ARM組裝中奇怪的立即值
movw r0, #39784
movt r0, 1
顯然,第一個是價值39784移動進入底部16位或R0,而是「1」 MOVT的操作數是奇數,因爲它不前,它有亂碼,我的印象是,立即下值需要散列。在某些情況下它是否可選?或者我錯過了一些神奇的東西?
GNU彙編程序在ARM彙編代碼的立即數操作數之前不需要一個八進制表示。您的印象不正確。
謝謝!你有沒有理由不使用它?什麼是約定? – Whyrusleeping
我不知道有一個公認的約定。不過,你當然應該保持一致。 – 2014-02-09 00:01:34
這是一個常見的話題; ARM彙編器中的常量。這裏是一個[很好的ARM博客](http://community.arm.com/groups/processors/blog/2010/07/27/how-to-load-constants-in-assembly-for-arm-architecture)主題。他們總是使用'哈希'。對於其他ARM彙編程序來說,使用散列可能更具可移植性。然而,'gcc'和'gas'是親密的。我不一定會使用編譯器輸出的內容作爲編寫彙編程序的指南。看看編譯器在做什麼是很有用的。 –