CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  硬件/嵌入开发 >  驱动开发/核心开发

有熟悉三星的ARM架构的S3c4510b汇编语言的请进!!!

楼主nanjianhui(nan)2002-10-25 09:22:09 在 硬件/嵌入开发 / 驱动开发/核心开发 提问

本人刚开始接触ARM指令和一些伪指令,用的是SDT2.5开发平台。下面一段程序看不太明白,希望能给与解答!!!  
                  AREA         Jump,   CODE,   READONLY         ;   name   this   block   of   code  
   
  num           EQU           2                               ;   Number   of   entries   in   jump   table  
                  ENTRY                                       ;   mark   the   first   instruction   to   call  
  start  
                  MOV           r0,   #0     ;   set   up   the   three   parameters  
                  MOV           r1,   #3  
                  MOV           r2,   #2  
                  BL             arithfunc               ;   call   the   function  
  stop  
                  MOV           r0,   #0x18                               ;   angel_SWIreason_ReportException  
                  LDR           r1,   =0x20026         ;   ADP_Stopped_ApplicationExit  
                  SWI           0x123456                                 ;   Angel   semihosting   ARM   SWI  
   
  arithfunc                                               ;   label   the   function  
                  CMP           r0,   #num                 ;   Treat   function   code   as   unsigned   integer  
                  BHS           DoAdd                       ;   If   code   is   >=2   then   do   operation   0.  
   
                  ADR           r3,   JumpTable       ;   Load   address   of   jump   table  
                  LDR           pc,   [r3,r0,LSL#2]               ;   Jump   to   the   appropriate   routine  
  JumpTable  
                  DCD           DoAdd  
                  DCD           DoSub  
  DoAdd  
                  ADD           r0,   r1,   r2             ;   Operation   0,   >1  
                  MOV           pc,   lr     ;   Return  
  DoSub  
                  SUB           r0,   r1,   r2             ;   Operation   1  
                  MOV           pc,lr                       ;   Return  
   
                  END                           ;   mark   the   end   of   this   file  
  程序中的DCD,   LDR的指令的具体意思不是太明白,希望能告诉我这个程序的意思!!  
  问题点数:100、回复次数:2Top

1 楼hongyucn(宏宇)回复于 2002-11-10 09:10:07 得分 20

这有可能是MMU中的一段吧Top

2 楼zgz(时光飞逝)回复于 2002-11-22 14:32:17 得分 80

DCD   用于定义一块内存(4字节),是伪指令。  
  LDR   是把一个地址装载到寄存器中。  
   
  ARM的汇编在arm的内核描述文档中有非常详细的描述。  
  这段程序不是什么MMU程序,显然是一个简单的跳转表的演示程序。  
  SWI   0x123456是调用Angel的系统功能来停止程序。  
  Top

相关问题

  • 帮我用汇编语言实现下面这个编程。 A+B=C 要求有输入、输入的提示。
  • 请问如何在C中嵌套汇编语言?
  • 在C++BUILDER6中如何嵌入汇编语言?(请教)
  • 在C中怎样插入汇编语言
  • 汇编语言比C语言运行快多少?
  • Unix C支持嵌入汇编语言吗?
  • 汇编语言与C指针的问题
  • 汇编语言?
  • 汇编语言
  • 汇编语言

关键词

  • arm
  • pc
  • code
  • 程序
  • dcd
  • ldr
  • jump
  • angel
  • mov
  • operation

得分解答快速导航

  • 帖主:nanjianhui
  • hongyucn
  • zgz

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo