gsq19920418 发表于 2016-8-26 12:18:26

想在IAR中實現保存現場,求代碼寫法

目前,有一段代碼可能是用到了寄存器傳參,所以想要用匯編把R4-R15壓入堆棧保存下,等待函數執行完再彈出試下!

jxchen 发表于 2016-8-26 23:13:46

FUN:
      PUSH    R4
      PUSH   R4
      PUSH   R5
      PUSH   R6
      PUSH   R7
      PUSH   R8
      PUSH   R9
      PUSH   R10
      PUSH   R11
      PUSH   R12
      PUSH   R13
      PUSH   R14
      PUSH   R15
      POP    R15
      POP    R14
      POP    R13
      POP    R12
      POP    R11
      POP    R10
      POP    R9
      POP    R8
      POP    R7
      POP    R6
      POP    R5
      POP    R4
      RET

gonboy 发表于 2016-8-27 09:26:45

绝对地址是用来做什么的呢?

stdio 发表于 2016-8-27 09:55:38

    stmfd sp!, {r0-r12, lr}

可以用类似这样的指令吧

wangsen 发表于 2016-8-27 22:58:27

不都是单片机自行进行保存现场的吗?

gsq19920418 发表于 2016-8-28 12:00:04

jxchen 发表于 2016-8-26 23:13
FUN:
      PUSH    R4
      PUSH   R4


我中間要插入一些代碼,需要計算

jxchen 发表于 2016-8-28 21:18:15

gsq19920418 发表于 2016-8-28 12:00
我中間要插入一些代碼,需要計算

FUN:
      PUSH   R4
      PUSH   R5
      PUSH   R6
      PUSH   R7
      PUSH   R8
      PUSH   R9
      PUSH   R10
      PUSH   R11
      PUSH   R12
      PUSH   R13
      PUSH   R14
      PUSH   R15

      從這理開始插入你的程式碼



      POP    R15
      POP    R14
      POP    R13
      POP    R12
      POP    R11
      POP    R10
      POP    R9
      POP    R8
      POP    R7
      POP    R6
      POP    R5
      POP    R4
      RET

jxchen 发表于 2016-8-28 21:19:56

wangsen 发表于 2016-8-27 22:58
不都是单片机自行进行保存现场的吗?

組合語言由自己控制所有的事情,編譯器不會自行處理

gsq19920418 发表于 2016-8-29 09:14:47

jxchen 发表于 2016-8-28 21:18
FUN:
      PUSH   R4
      PUSH   R5


我單獨寫個ASM吧!

jxchen 发表于 2016-8-30 22:26:39

gsq19920418 发表于 2016-8-29 09:14
我單獨寫個ASM吧!

答案已經告訴你了如何保護與插入你的代碼,我不明白你的問題是什麼

talkingbeast 发表于 2016-8-30 22:36:31

你要问什么??不是有人回答了吗

gsq19920418 发表于 2016-8-31 09:07:25

jxchen 发表于 2016-8-30 22:26
答案已經告訴你了如何保護與插入你的代碼,我不明白你的問題是什麼

雖然沒學會C语言和匯編的混合編程,但是問題已經發現,好像是layout工程師的佈綫問題,把芯片拆了,或者換到另外一路模擬I2C就好了,謝謝!
页: [1]
查看完整版本: 想在IAR中實現保存現場,求代碼寫法