久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

Hi,歡迎來到嵌入式培訓高端品牌 - 華清遠見教育科技集團<北京總部官網>,專注嵌入式工程師培養15年!
當前位置: > 華清遠見教育科技集團 > 嵌入式學習 > 講師博文 > 用匯編語言申請棧空間
用匯編語言申請棧空間
時(shi)間:2017-01-05作(zuo)者(zhe):華清遠見

在C程序運行以(yi)前(qian)要設置好(hao)棧空(kong)間,在嵌入式ARM系統中,ARM 的(de)啟(qi)動代(dai)碼可以(yi)實現此類功能,

etup Stack for each mode
                                LDR        R0, =Stack_Top
        ; Enter Undefined Instruction Mode and set its Stack Pointer
                                MSR         CPSR_c, #Mode_UND:OR:I_Bit:OR:F_Bit
                                MOV          SP, R0
                                SUB          R0, R0, #UND_Stack_Size
        ; Enter Abort Mode and set its Stack Pointer
                                MSR        CPSR_c, #Mode_ABT:OR:I_Bit:OR:F_Bit
                                MOV        SP, R0
                                SUB         R0, R0, #ABT_Stack_Size
        ; Enter FIQ Mode and set its Stack Pointer
                                MSR         CPSR_c, #Mode_FIQ:OR:I_Bit:OR:F_Bit
                                MOV        SP, R0
                                SUB        R0, R0, #FIQ_Stack_Size
        ; Enter IRQ Mode and set its Stack Pointer
                                MSR        CPSR_c, #Mode_IRQ:OR:I_Bit:OR:F_Bit
                                MOV        SP, R0
                                SUB        R0, R0, #IRQ_Stack_Size
        ; Enter Supervisor Mode and set its Stack Pointer
                                MSR         CPSR_c, #Mode_SVC:OR:I_Bit:OR:F_Bit
                                MOV        SP, R0
                                SUB        R0, R0, #SVC_Stack_Size
        ; Enter User Mode and set its Stack Pointer
                           &nbsp;    MSR         CPSR_c, #Mode_USR

 以上是MDK的startup.s文件對各種處理器模(mo)式棧空間的設(she)置(zhi),但是在多進程(cheng)編程(cheng)時我們(men)希(xi)望棧空間的設(she)置(zhi)更靈(ling)活(huo),我們(men)可以使用幾(ji)條偽指(zhi)令來實(shi)現棧空間的申請,

AREA |subr|, CODE, READONLY

;軟件中斷

SoftwareInterrupt
        LDR SP, StackSvc ; 重新設置堆棧指針
        STMFD SP!, {R0-R3, R12, LR}
        StackSvc DCD (SvcStackSpace + SVC_STACK_LEGTH * 4 - 4)

在地(di)址(zhi)StackSvc的(de)(de)空(kong)間(jian)(SvcStackSpace + SVC_STACK_LEGTH * 4 - 4),這個值正好是下面用SPACE 申請(qing)的(de)(de)空(kong)間(jian)的(de)(de)高(gao)地(di)址(zhi),ATPCS標(biao)準ARM采用FD棧,所(suo)以要去(qu)棧空(kong)間(jian)的(de)(de)高(gao)地(di)址(zhi);

        AREA SWIStacks, DATA, NOINIT,ALIGN=2
         SvcStackSpace SPACE SVC_STACK_LEGTH * 4

使用SPACE 申請以SvcStackSpace標(biao)號為(wei)起始地址,空間(jian)(jian)為(wei)SVC_STACK_LEGTH * 4大(da)小的(de)空間(jian)(jian)。

發表評論
評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)