這是目前我和我的隊友所堅持的作業項目。我們對大會的介紹並沒有太多介紹,這應該是我們的第一個家庭作業練習。任務是創建一個將0xAABBCCDD轉換爲0xDDCCBBAA的程序。ARM Assembly - Converting Endianness
我不是在尋找答案,因爲那樣會打敗目的,但是我們對這個愚蠢的事情的困難感到非常沮喪。我們認爲我們在創建一個可行的解決方案方面有一個良好的開端,但我們無法拿出該計劃的其餘部分。
首先,我們掩蓋每一個三元組(AA),(BB),(CC),(DD)到一個不同的寄存器:
LDR R0, LittleEndian // 0xAABBCCDD
AND R1, R0, #0xFF000000 // 0xAA
AND R2, R0, #0x00FF0000 // 0xBB
AND R3, R0, #0x0000FF00 // 0xCC
AND R4, R0, #0x000000FF // 0xDD
然後我們試圖把它們重新對準到R0寄存器,但如果我們能來到地獄了一個很好的解決方案......
我們最大的努力來自:
ORR R0, R1, LSL #24
ORR R0, R2, LSL #8
ORR R0, R3, LSR #8
ORR R0, R4, LSR #24
它生產0xBBBBCCDD一些奇怪的原因;我們真的不知道。
任何提示將不勝感激。再次,我們正在尋求幫助,但不是解決方案。
乾杯!
還有一個特殊的功能。 BSWAP。 – 2012-07-14 09:16:00