zoukankan      html  css  js  c++  java
  • ARM的ADS汇编器和GCC汇编器

    一:ads下的一段汇编程序:

    __main 
    EXPORT BootReset 
    BootReset 
                   B resetvec_reqset 
                   IMPORT  BootEntry 
                   IMPORT  |Image$$RO$$Limit|

             AREA  BOOTROM, CODE, READONLY 
                  LDR  r0, =|Image$$RO$$Limit| 
                  BEQ  %1 
                  ldr  pc, [pc,#-&F20]

    转换到gcc下的汇编程序为:

    __main 
    .global BootReset 
    BootReset: 
                B resetvec_reqset 
               .extern  BootEntry 
               .extern  Image_RO_Limit 
    #  AREA  BOOTROM, CODE, READONLY 
               LDR  r0, =Image_RO_Limit 
               BEQ  FUNC1 
               ldr  pc, [pc,#-0xF20]

    二:将ARM SDT下的汇编码移植到GCC for ARM编译器时,经常要做如下修改:
    1、注释行以“@”或""代替“;”
    2、伪操作符替换:
    INCLUDE 替换成 .INCLUDE
    TCLK2 EQU PB25 替换成 .equ TCLK2, PB25
    EXPORT 替换成 .global
    IMPORT 替换成 .extern
    DCD 替换成 .long
    IF :DEF: 替换成 .IFDEF
    ELSE 替换成 .ELSE
    ENDIF 替换成 .ENDIF
    :OR: 替换成 |
    :SHL: 替换成 <<
    END 替换成 .end

    符号定义后加":"号
    AREA Word, CODE, READONLY --> .text
    AREA Block, DATA, READWRITE --> .data
    CODE32 --> .arm
    CODE16 --> .thumb
    LTORG --> .ltorg

    3、操作数及运算符号替换
    ldr pc, [pc, #&18] 替换成 ldr pc, [pc, #+0x18]
    “&”以“+0x”号替换

  • 相关阅读:
    非常实用的php各种文件操作函数
    两个自用的Dota2 自走棋辅助工具:阵容模拟器与UI Mod插件
    Scratch 数字游戏
    初识Scratch 3.0
    何时重头来
    cocos2d-x 3.0 Armature jsb 初体验
    cocosbuilder中的Callbacks和sound effects
    cocos2dx js文件加密为jsc文件
    cocos2dx jsb 在IOS与安卓下的一些不同之处
    安卓打包记录
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/3651233.html
Copyright © 2011-2022 走看看