[請益] 如何讀懂arm 組語?

看板ASM (組合語言)作者 (brotherD)時間5年前 (2018/11/23 14:00), 5年前編輯推噓2(204)
留言6則, 2人參與, 5年前最新討論串1/1
hi,各位好。 小弟剛接觸arm系列,對於很多觀念都還不清楚,想藉由這個例子請教各位大大該如何讀懂 arm的組語,以下三行為我在程式碼看到的組語 IDE: Code Composer Studio compiler: 不會看 CPU: arm cortex-a8 chip: TI am335x 圖: https://imgur.com/a/upkoQxM MRS R1, CPSR; AND R1, #0x80; STR R1, [R0]; 參考手冊: ARM and Thumb Assembler Instructions.pdf --------------------------------------------------- MRS<cond> Rd, cpsr; //set Rd = cpsr Q1: 依照手冊上指示: The instruction is only executed if the condition <cond> is passed。但我要怎麼知道這個condition有沒有pass? AND<cond>{S} Rd, Rn, #<rotated_immed> ARMv1 Q2: rotated_immed是什麼意思呢? 手冊: <rotated_immed> is any 32-bit immediate that can be represented as an eightbit unsigned value rotated right (or left) by an even number of bit positions. 看完了也看不懂...Orz 第三行,看了手冊,應該就是把R0指到的address的值放進R1,這行倒沒什麼問題。 Q4: function的名稱是CPUirq_get,看不太懂是什麼意思?拿到irq? Q5: state完全沒用到,懷疑function裡面被串改過? Q6: 用debug mode觀看暫存器行為: 1. 把CPSR的值放進R1,此時 R1 = CPSR = 0x60000013 2. 與0x80做and,此時 R1 = 0x00000000 3. 把address(0x80171F28) = 0x00000000,但address 0x80171F28根本沒變數啊... Q7: 網路上有可以發問類似這些問題的論壇嗎?不管是中文或英文的都可以,我發現arm的 論壇真的好少>< 謝謝各位指教QQ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 118.163.216.18 ※ 文章網址: https://www.ptt.cc/bbs/ASM/M.1542952843.A.307.html ※ 編輯: zzss2003 (118.163.216.18), 11/23/2018 14:01:02

11/23 19:24, 5年前 , 1F
Q2 旋轉立即數
11/23 19:24, 1F

11/26 02:44, 5年前 , 2F
Q1 角括號是optional 沒加就不會判斷condition
11/26 02:44, 2F

11/26 02:46, 5年前 , 3F
google : arm condition flag
11/26 02:46, 3F

11/26 02:46, 5年前 , 4F
Q5. google AAPCS
11/26 02:46, 4F

11/26 02:47, 5年前 , 5F
r0=state
11/26 02:47, 5F

11/26 02:53, 5年前 , 6F
Q6 以C來說str是類似*r0=r1,但你的描述是*r0=*r1
11/26 02:53, 6F
文章代碼(AID): #1RzvUBC7 (ASM)
文章代碼(AID): #1RzvUBC7 (ASM)