⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 objmacs.s

📁 AT91所有开发板的资料 AT91所有开发板的资料
💻 S
📖 第 1 页 / 共 2 页
字号:
        MACRO        Push    $Regs, $Base        LCLS    BaseReg [ "$Base" = ""BaseReg SETS    "sp" |BaseReg SETS    "$Base" ] [ LDM_MAX < 16        LCLA    n        LCLA    r        LCLS    s        LCLS    subs        LCLS    chs       SETS    "$Regs"n       SETA    :LEN:ssubs    SETS    ""r       SETA    0        WHILE   n<>0n         SETA    n-1ch        SETS    s:RIGHT:1s         SETS    s:LEFT:n          [ ch = ","r           SETA    r+1            [ r >= LDM_MAX             [ {CONFIG} = 16              PUSH    {$subs}             |              STMFD   $BaseReg!,{$subs}             ]subs          SETS    ""r             SETA    0            |subs          SETS    ch:CC:subs            ]          |            [ ch = "-"              ! 1, "Can't handle register list including '-'"            |subs          SETS    ch:CC:subs            ]          ]        WEND  [ {CONFIG} = 16        PUSH    {$subs}  |        STMFD   $BaseReg!,{$subs}  ] |  [ {CONFIG} = 16        PUSH    {$Regs}  |        STMFD   $BaseReg!, {$Regs}  ] ]        MEND        MACRO        FunctionEntry $UsesSb, $SaveList, $MakeFrame  [ {CONFIG} = 16    [ "$UsesSb" <> ""        !       1, "Cannot use SB in 16 bit code"    ]    [ "$MakeFrame" <> ""        !       1, "Cannot make frame in 16 bit code"    ]  ]        LCLS    Temps        LCLS    TempsCTemps   SETS    "$SaveList"TempsC  SETS    "" [ Temps <> ""TempsC SETS Temps :CC: "," ] [ "$UsesSb" <> "" :LAND: make="shared-library"   [ "$MakeFrame" = ""        MOV     ip, sb  ; intra-link-unit entry        Push    "$TempsC.sb,lr"        MOV     sb, ip   |        MOV     ip, sb  ; intra-link-unit entry        Push    "sp,lr,pc"        ADD     lr, sp, #8        Push    "$TempsC.sb,fp"        MOV     fp, lr        MOV     sb, ip   ] |   [ "$MakeFrame" = ""        Push    "$TempsC.lr"   |        MOV     ip, sp        Push    "$TempsC.fp,ip,lr,pc"        SUB     fp, ip, #4   ] ]        MEND        GBLA    V_N        [ INTERWORK :LOR: THUMB        MACRO$label  VEnter_16               ; Like VEnter, but declare __16$label as the        CODE16                  ; THUMB entry point__16$label        BX      pc        CODE32$label  STMFD   r13!,veneer_s   ; ARM is the declared entry point        MEND        MACRO$label  VEnter                  ; Declare the THUMB entry point as the main        CODE16                  ; entry point$label  BX      pc        CODE32__32$label                      ; Declare a __32$label entry point for ARM        STMFD   r13!,veneer_s        MEND        MACRO$label  VReturn $cc$label  LDM$cc.FD r13!,veneer_s        BX$cc   lr        MEND        MACRO$label  VPull $cc$label  LDM$cc.FD r13!,veneer_s        MEND        MACRO$label  ReturnToLR $cc$label  BX$cc   lr        MEND        MACRO$label  ReturnToLR_flg $cc$label  BX$cc   lr        MEND        MACRO$label  ReturnToStack $cc$label  LDM$cc.FD sp!,{lr}        BX$cc   lr        MEND        MACRO$label  PullFromStack $cc$label  LDM$cc.FD sp!,{lr}        MEND        MACRO$label  EnterWithLR_16        [ "$label" <> ""        EXPORT __16$label        EXPORT $label        ]        CODE16__16$label        BX      pc        CODE32$label        MEND        MACRO$label  EnterWithLR_Thumb        [ "$label" <> ""        EXPORT __16$label        ]        [ INTERWORK     ; must create ARM interworking veneer        CODE32        EXPORT $label$label        ADR ip, __16$label + 1        BX ip        ]        CODE16__16$label        MEND        MACRO$label  EnterWithStack_16        [ "$label" <> ""        EXPORT __16$label        EXPORT $label        ]        CODE16__16$label        BX      pc        CODE32$label  STMFD   sp!,{lr}        MEND        MACRO$label  EnterWithLR        [ "$label" <> ""        EXPORT __32$label        EXPORT $label        ]        CODE16$label  BX      pc        CODE32__32$label        MEND        MACRO$label  EnterWithStack        [ "$label" <> ""        EXPORT __32$label        EXPORT $label        ]        CODE16$label  BX      pc        CODE32__32$label        STMFD   sp!,{lr}        MEND                MACRO        Export $name        EXPORT  $name        EXPORT  __16$name        MEND        MACRO        Export_32 $name        EXPORT  __32$name        EXPORT  $name        MEND        MACRO        Import_32 $name        IMPORT __32$name        MEND        MACRO$label  B_32 $name$label  B       __32$name        MEND        |;ARM 32 and 26-bit mode        MACRO$label  VEnter_16$label  STMFD   r13!,veneer_s        MEND        MACRO$label  VEnter$label  STMFD   r13!,veneer_s        MEND        MACRO$label  VReturn $cc$label  [ INTERWORK        LDM$cc.FD r13!,veneer_s        BX$cc   lr        |        [ {CONFIG} = 32         LDM$cc.FD r13!,veneer_l        ]        [ {CONFIG} = 26        LDM$cc.FD r13!,veneer_l^        ]        ]        MEND            MACRO$label  VPull $cc$label  LDM$cc.FD r13!,veneer_s        MEND        MACRO$label  ReturnToLR $cc$label  [ INTERWORK        BX$cc   lr        |        [ {CONFIG} = 32        MOV$cc  pc,lr        ]        [ {CONFIG} = 26        MOV$cc.S pc,lr        ]        ]        MEND        MACRO$label  ReturnToLR_flg $cc$label  [ INTERWORK        BX$cc   lr        |        MOV$cc  pc,lr        ]        MEND        MACRO$label  ReturnToStack $cc$label  [ INTERWORK        LDM$cc.FD sp!,{lr}        BX$cc    lr        |        [ {CONFIG} = 32        LDM$cc.FD sp!,{pc}        ]        [ {CONFIG} = 26        LDM$cc.FD sp!,{pc}^        ]        ]        MEND        MACRO$label  PullFromStack $cc$label  LDM$cc.FD sp!,{lr}        MEND        MACRO$label  EnterWithLR_16        EXPORT $label$label        MEND        MACRO$label  EnterWithStack_16        EXPORT $label$label  STMFD   sp!,{lr}        MEND        MACRO$label  EnterWithLR        EXPORT $label$label        MEND        MACRO$label  EnterWithStack        EXPORT $label$label  STMFD   sp!,{lr}        MEND        MACRO        Export $name        EXPORT  $name        MEND        MACRO        Export_32 $name        EXPORT  $name        MEND        MACRO        Import_32 $name        IMPORT $name        MEND        MACRO$label  B_32 $name$label  B       $name        MEND        ]        MACRO        DataArea        AREA    |C$$data|, DATA        MEND [ make <> "shared-library"        MACRO        CodeArea $name    [ INTERWORK        AREA    |C$$code|, CODE, READONLY, INTERWORK    |        AREA    |C$$code|, CODE, READONLY    ]        MEND        MACRO        LoadStaticAddress $Addr, $Reg, $Ignore        LDR     $Reg, =$Addr        MEND        MACRO        LoadStaticBase $Reg, $Ignore        LoadStaticAddress StaticData, $Reg, $Ignore        MEND        MACRO        AdconTable        MEND        MACRO        Function $name, $type   ; should be ARMFunction...        LCLS    TempsTemps   SETS    VBar:CC:"$name":CC:VBar        EXPORT  $Temps      ; oops, forgot to check $type...  [ THUMB :LAND: {CONFIG} <> 16        CODE16$Temps        BX      pc        CODE32; If we are *NOT* building an interworking library we must set bit 0 of lr; as the caller will not have done it for us.    [ :LNOT:INTERWORK        ORR     lr, lr, #1    ]  |$Temps  ]        MEND |        MACRO        CodeArea $name        AREA    |C$$code|, CODE, READONLY, REENTRANT, PIC        MEND        MACRO        AdconTable        AREA    |sb$$adcons|, DATA, READONLY, BASED sb        MEND        MACRO        Function $name, $type        LCLS    TempsTemps   SETS    VBar:CC:"$name":CC:VBar [ "$type" = ""        EXPORT  $Temps |        EXPORT  $Temps[$type] ]$Temps        MEND ]        MACRO        CODE_32        [ {CONFIG} = 16        CODE32        ]        MEND        MACRO        CODE_16        [ {CONFIG} <> 16        CODE16        ]        MEND        END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -