免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1100 | 回复: 0
打印 上一主题 下一主题

ARM 学习笔记1-开始汇编 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-09 19:05 |只看该作者 |倒序浏览
  ARM 学习笔记1-开始汇编
目标:
  1 熟悉ADS编译器和编辑环境
  2 熟悉AXD如何调试汇编代码
  3 熟悉几条汇编指令
  4 熟悉一个汇编程序的基本元素
  5 在AXD中使用ARMulate仿真如何确认结果
以下是以上目标的展开!
1 熟悉ADS编译器和编辑环境
  使用了ADS1.2,很简单的界面,没有什么环境配置,已经包含有汇编编译器armasm;
   C/C++语言编译器tcc;连结器armlink等等.
   建立一个工程后,既可以写汇编代码,也可以写C/C++代码.不过编辑器有点丑陋.
   开始第一个汇编程序,出现了以下几个问题:
     1)Error : All63E:Unknown opcode
       代码如下: AREA Block, CODE, READONLY
       解决:编译器太弱了,原来是是指令不能在第一列.按了一个TAB后,好了.
            但是标号(label)可以放在第一列.
     2)Error : All63E:Unknown opcode
       代码如下:     num   EQU  20
       解决:编译器太弱了,我已经空了一列了,还有错.
            但是放在第一列后问题解决,所以发现伪操作等不能空.
2 熟悉AXD如何调试汇编代码
  可以通过ADS启动调试,也可以在AXD中打开文件调试.
   调试和GDB一样,很方便.
   我调试了一段代码,是COPY STRING的,因为无法输出到console,所以就
   确认目标地址的内存中的值是不是和源地址的值一样.
   在调试的过程中最好:
     1)打开source code
     2)打开disasmble code
     3)打开processor register
     4)如果需要还可以观察memory windows
  3 熟悉几条汇编指令
    1) LDR r0,=src
       这是一条伪指令,读的是src的地址到r0中.
    2)STMFD sp!,{r4-r11}
      用于调用函数保存栈.
      把REGISTER LIST的内容保存到连续的内存sp中,并且sp地址会更新.
      FD:FULL DESCENDANT,所以对于BASE ADDRESS sp来说,保存一个值,则地址-4.
      向下增长吗.
    3)LDMIA r0!,{r4-r11}
       把r0 为BASE ADDRESS内存的VALUE装载到REGISTER LIST中,并且r0地址会更新.
       IA:INCREMENT AFTER,所以对于BASE ADDRESS r0来说,取出一个值,则地址+4.
    4)STMIA r1!,{r4-r11}
       把REGISTER LIST的VALUE保存到r1为BASE ADDRESS内存中,并且r1地址会更新.
       IA:INCREMENT AFTER,所以对于BASE ADDRESS r1来说,保存一个值,则地址+4.
    5)LDR r3,[r0],#4
      这是一条伪指令,把r0地址的内容读到r3中,并且r0的地址更新为r0+4.
    6)STR r3,[r1],#4
      这是一条伪指令,把r3的内容保存到r1的地址中,并且r1的地址更新为r0+4.
    7)SWI 0x123456
      软件中断指令.
4 熟悉一个汇编程序的基本元素
     1)AREA部分
     2)ENTRY部分
     3)BODY部分
     4)END结束
     
   
5 在AXD中使用ARMulate仿真如何确认结果
     1)CONSOLE输出消息,好象C语言比较适合
     2)MEMORY地址处的内容是否变化,这是基本!

       
        文件:init.rar
        大小:0KB
        下载:
下载
       
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4591/showart_377915.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP