国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

Hi,歡迎來到嵌入式培訓(xùn)高端品牌 - 華清遠(yuǎn)見教育科技集團(tuán)<北京總部官網(wǎng)>,專注嵌入式工程師培養(yǎng)15年!
當(dāng)前位置: > 華清遠(yuǎn)見教育科技集團(tuán) > 嵌入式學(xué)習(xí) > 講師博文 > 用匯編語(yǔ)言申請(qǐng)棧空間
用匯編語(yǔ)言申請(qǐng)?臻g
時(shí)間:2017-01-05作者:華清遠(yuǎn)見

在C程序運(yùn)行以前要設(shè)置好?臻g,在嵌入式ARM系統(tǒng)中,ARM 的啟動(dòng)代碼可以實(shí)現(xiàn)此類功能,

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
                                MSR         CPSR_c, #Mode_USR

以上是MDK的startup.s文件對(duì)各種處理器模式棧空間的設(shè)置,但是在多進(jìn)程編程時(shí)我們希望?臻g的設(shè)置更靈活,我們可以使用幾條偽指令來實(shí)現(xiàn)?臻g的申請(qǐng),

AREA |subr|, CODE, READONLY

;軟件中斷

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

在地址StackSvc的空間(SvcStackSpace + SVC_STACK_LEGTH * 4 - 4),這個(gè)值正好是下面用SPACE 申請(qǐng)的空間的高地址,ATPCS標(biāo)準(zhǔn)ARM采用FD棧,所以要去棧空間的高地址;

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

使用SPACE 申請(qǐng)以SvcStackSpace標(biāo)號(hào)為起始地址,空間為SVC_STACK_LEGTH * 4大小的空間。

發(fā)表評(píng)論
評(píng)論列表(網(wǎng)友評(píng)論僅供網(wǎng)友表達(dá)個(gè)人看法,并不表明本站同意其觀點(diǎn)或證實(shí)其描述)