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

📄 objmacs.s

📁 AT91所有开发板的资料 AT91所有开发板的资料
💻 S
📖 第 1 页 / 共 2 页
字号:
;;; h_objmacro.s;;; Copyright (C) Advanced RISC Machines Ltd., 1991;;; RCS $Revision: 1.1 $;;; Checkin $Date: 1999/03/11 11:53:41 $;;; Revising $Author: rivimey $ [ :LNOT: :DEF: THUMB        GBLL    THUMB    [ :DEF: thumbTHUMB   SETL {TRUE}    |    [ {CONFIG} = 16THUMB   SETL    {TRUE}    |THUMB   SETL    {FALSE}    ]    ] ] [ THUMB        CODE32 ] [ :LNOT: :DEF: INTERWORK        GBLL    INTERWORKINTERWORK SETL {FALSE} ] [ :LNOT::DEF:EMBEDDED_CLIB; If EMBEDDED_CLIB is not defined we are going to define it        GBLL    EMBEDDED_CLIB; If 'embedded' is defined EMBEDDED_CLIB defaults to {TRUE} else {FALSE}    [ :DEF:embeddedEMBEDDED_CLIB   SETL    {TRUE}    |EMBEDDED_CLIB   SETL    {FALSE}    ] ] [ :LNOT: :DEF: LDM_MAX        GBLA    LDM_MAXLDM_MAX SETA    16 ] [ :LNOT: :DEF: make        GBLS    makemake    SETS    "all" ] [ :LNOT: :DEF: FPIS        GBLA    FPISFPIS    SETA    3 ]        GBLL    FPE2FPE2    SETL    FPIS=2        GBLS    VBar        GBLS    UL        GBLS    XXModuleNameVBar    SETS    "|"UL      SETS    "_"        MACRO        Module  $nameXXModuleName SETS UL:CC:"$name":CC:UL        MEND        MACRO$Label  Variable $Size        LCLS    Temps        LCLA    Tempa [ "$Size"=""Tempa   SETA    1 |Tempa   SETA    $Size ]Temps   SETS    VBar:CC:XXModuleName:CC:"$Label":CC:VBar        KEEP    $Temps        ALIGNO_$Label *      .-StaticData$Temps  %       &$Tempa*4        MEND        MACRO$Label  ExportedVariable $Size        LCLS    Temps        LCLA    Tempa [ "$Size"=""Tempa   SETA    1 |Tempa   SETA    $Size ]Temps   SETS    VBar:CC:"$Label":CC:VBar        EXPORT  $Temps        ALIGNO_$Label *      .-StaticData$Temps  %       &$Tempa*4        MEND        MACRO$Label  ExportedWord $Value        LCLS    TempsTemps   SETS    VBar:CC:"$Label":CC:VBar        EXPORT  $Temps        ALIGNO_$Label *      .-StaticData$Temps   &      $Value        MEND        MACRO$Label  ExportedVariableByte $Size        LCLS    Temps        LCLA    Tempa [ "$Size"=""Tempa   SETA    1 |Tempa   SETA    $Size ]Temps   SETS    VBar:CC:"$Label":CC:VBar        EXPORT  $TempsO_$Label *      .-StaticData$Temps  %       &$Tempa        MEND        MACRO$Label  VariableByte $Size        LCLS    Temps        LCLA    Tempa [ "$Size"=""Tempa   SETA    1 |Tempa   SETA    $Size ]Temps   SETS    VBar:CC:XXModuleName:CC:"$Label":CC:VBar        KEEP    $TempsO_$Label *      .-StaticData$Temps  %       &$Tempa        MEND        MACRO$Label  InitByte $Value$Label  =        $Value        MEND        MACRO$Label  InitWord $Value$Label  &        $Value        MEND        MACRO$Label  Keep    $Arg        LCLS    Temps$Label  $ArgTemps   SETS    VBar:CC:XXModuleName:CC:"$Label":CC:VBar        KEEP    $Temps$Temps        MEND        MACRO        PopFrame  $Regs,$Caret,$CC,$Base [ {CONFIG} = 16 ! 1, "MACRO PopFrame not implemented for 16 bit code" ]        LCLS    BaseReg [ "$Base" = ""BaseReg SETS    "fp" |BaseReg SETS    "$Base" ]        LCLA    count        LCLS    s        LCLS    chs       SETS    "$Regs"count   SETA    1        WHILE   s<>""ch        SETS    s:LEFT:1s         SETS    s:RIGHT:(:LEN:s-1)          [ ch = ","count       SETA    count+1          |            [ ch = "-"              ! 1, "Can't handle register list including '-'"            ]          ]        WEND [ LDM_MAX < count        LCLA    r        LCLS    subss       SETS    "$Regs"subs    SETS    ""r       SETA    0        SUB     ip, $BaseReg, #4*&$count        WHILE   s<>""ch        SETS    s:LEFT:1s         SETS    s:RIGHT:(:LEN:s-1)          [ ch = ","r           SETA    r+1            [ r >= LDM_MAX              LDM$CC.FD ip!,{$subs}subs          SETS    ""r             SETA    0            |subs          SETS    subs:CC:ch            ]          |            [ ch = "-"              ! 1, "Push can't handle register list including '-'"            |subs          SETS    subs:CC:ch            ]          ]        WEND        LDM$CC.FD   ip,{$subs}$Caret |        LDM$CC.DB   $BaseReg, {$Regs}$Caret ]        MEND        MACRO        Pop     $Regs,$Caret,$CC,$Base [ {CONFIG} = 16  [ "$Caret" <> ""  ! 1, "Cannot use writeback in 16 bit code"  ]  [ "$Base" <> ""  ! 1, "Cannot specify a base register in 16 bit code"  ] ]        LCLS    BaseReg [ "$Base" = ""BaseReg SETS    "sp" |BaseReg SETS    "$Base" ] [ {CONFIG} = 16  [ "$CC" <> "" :LAND: "$CC" <> "AL"    BN$CC       %FT0  ] ] [ LDM_MAX < 16        LCLA    r        LCLS    s        LCLS    subs        LCLS    chs       SETS    "$Regs"subs    SETS    ""r       SETA    0        WHILE   s<>""ch        SETS    s:LEFT:1s         SETS    s:RIGHT:(:LEN:s-1)          [ ch = ","r           SETA    r+1            [ r >= LDM_MAX             [ {CONFIG} = 16              POP       {$subs}             |              LDM$CC.FD   $BaseReg!,{$subs}             ]subs          SETS    ""r             SETA    0            |subs          SETS    subs:CC:ch            ]          |            [ ch = "-"              ! 1, "Can't handle register list including '-'"            |subs          SETS    subs:CC:ch            ]          ]        WEND  [ {CONFIG} = 16        POP         {$subs}0  |        LDM$CC.FD   $BaseReg!,{$subs}$Caret  ] |  [ {CONFIG} = 16        POP         {$Regs}0  |        LDM$CC.FD   $BaseReg!, {$Regs}$Caret  ] ]        MEND        MACRO        Return  $UsesSb, $ReloadList, $Base, $CC [ {CONFIG} = 16  [ "$UsesSb" <> ""        !       1, "Cannot use SB in 16 bit code"  ]  [ "$Base" = "fpbased"        !       1, "Cannot use fpbased in 16 bit code"  ] ]        LCLS    TempsTemps   SETS    "$ReloadList" [ "$UsesSb" <> "" :LAND: make="shared-library"   [ Temps = ""Temps   SETS    "sb"   |Temps   SETS    Temps:CC:", sb"   ] ] [ {CONFIG} = 26   [ "$Base" = "LinkNotStacked" :LAND: "$ReloadList"=""          MOV$CC.S pc, lr   |     [ Temps <> ""Temps   SETS    Temps :CC: ","     ]     [ "$Base" = "fpbased"       PopFrame "$Temps.fp,sp,pc",^,$CC     |       Pop      "$Temps.pc",^,$CC     ]   ] |  [ {CONFIG} = 16      [ "$CC" <> "" :LAND: "$CC" <> "AL"        BN$CC   %FT0      ]   [ "$Base" = "LinkNotStacked" :LAND: "$ReloadList"=""     [ INTERWORK        BX      lr     |        MOV     pc, lr     ]   |     [ Temps <> ""Temps   SETS    Temps :CC: ","     ]     [ INTERWORK       BX       pc       CODE32       Pop      "$Temps.lr",,       BX       lr       CODE16     |       Pop      "$Temps.pc",,     ]   ]0  |   [ "$Base" = "LinkNotStacked" :LAND: "$ReloadList"=""    [ INTERWORK :LOR: THUMB        BX$CC lr    |        MOV$CC pc, lr    ]   |     [ Temps <> ""Temps   SETS    Temps :CC: ","     ]    [ INTERWORK :LOR: THUMB     [ "$Base" = "fpbased"       PopFrame "$Temps.fp,sp,lr",,$CC     |       Pop      "$Temps.lr",,$CC     ]     BX$CC lr    |     [ "$Base" = "fpbased"       PopFrame "$Temps.fp,sp,pc",,$CC     |       Pop      "$Temps.pc",,$CC     ]    ]   ]  ] ]        MEND        MACRO        PushA   $Regs,$Base [ {CONFIG} = 16        !       1, "MACRO PushA not implemented for 16 bit code" ]        ; Push registers on an empty ascending stack, with stack pointer $Base        ; (no default for $Base, won't be sp) [ LDM_MAX < 16        LCLA    r        LCLS    s        LCLS    subs        LCLS    chs       SETS    "$Regs"subs    SETS    ""r       SETA    0        WHILE   s<>""ch        SETS    s:LEFT:1s         SETS    s:RIGHT:(:LEN:s-1)          [ ch = ","r           SETA    r+1            [ r >= LDM_MAX              STMIA   $Base!,{$subs}subs          SETS    ""r             SETA    0            |subs          SETS    subs:CC:ch            ]          |            [ ch = "-"              ! 1, "Can't handle register list including '-'"            |subs          SETS    subs:CC:ch            ]          ]        WEND        STMIA   $Base!,{$subs} |        STMIA   $Base!, {$Regs} ]        MEND        MACRO        PopA    $Regs,$Base  [ {CONFIG} = 16        !       1, "MACRO PopA not implemented for 16 bit code"  ]        ; Pop registers from an empty ascending stack, with stack pointer $Base        ; (no default for $Base, won't be sp) [ 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              LDMDB   $Base!,{$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        LDMDB   $Base!,{$subs} |        LDMDB   $Base!, {$Regs} ]        MEND

⌨️ 快捷键说明

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