URN Logo
UNIX Resources » Linux » China Linux Forum » Linux内核技术 » 18 » 请教arm汇编,多谢了。
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  TI专版
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
请教arm汇编,多谢了。
请教arm汇编,多谢了。 - bob2004 [2007-11-21 12:57 | 2,240 byte(s)]
 
Re: 请教arm汇编,多谢了。 - littletiger [2007-11-23 17:39 | 149 byte(s)]
 
Re: 请教arm汇编,多谢了。 - shinakira [2007-11-22 15:08 | 33 byte(s)]
 
Re: 请教arm汇编,多谢了。 - cdbdyx [2007-11-22 09:35 | 174 byte(s)]
 
Re: 请教arm汇编,多谢了。 - IN_FLAMES [2007-11-21 13:35 | 21 byte(s)]
 
Re: 请教arm汇编,多谢了。 - bob2004 [2007-11-21 13:39 | 433 byte(s)]
 
Re: 请教arm汇编,多谢了。 - ovis_poly [2007-11-22 17:14 | 329 byte(s)]
 
Re: 请教arm汇编,多谢了。 - IN_FLAMES [2007-11-21 14:43 | 69 byte(s)]
 
Subject: 请教arm汇编,多谢了。
Author: bob2004    Posted: 2007-11-21 12:57    Length: 2,240 byte(s)
[Original] [Print] [Top]
1> 看u-boot的 1。2。0的 arm920T的 start.S 的时候 有疑问:


.globl _start

_start: b reset

ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq

_undefined_instruction: .word undefined_instruction
_software_interrupt: .word software_interrupt
_prefetch_abort: .word prefetch_abort
_data_abort: .word data_abort
_not_used: .word not_used
_irq: .word irq
_fiq: .word fiq

.balignl 16,0xdeadbeef

我知道上面定义的是 几组向量表, 当系统reset 后, u-boot
会立即执行reset向量里面的入口函数。

那后面呢? 当 产生irq的时候, 会 进入 irq向量的入口, 这是怎么做到呢?
就凭后面那几句ldr 吗? 怎么都给写到一起了呢? 这是语法?
看起来会连续执行哦, 但是从道理上又肯定不会 。
大侠给解释一下啊?


2> 另外看代码搬移的时候 有点疑问:

relocate: /* relocate U-Boot to RAM */
。。。。。。。。。。

copy_loop:
ldmia r0!, {r3-r10} /* copy from source address [r0] */
stmia r1!, {r3-r10} /* copy to target address [r1] */
cmp r0, r2 /* until source end addreee [r2] */
ble copy_loop /*b 是跳转, le是什么条件?


上面的过程很清楚:就是 利用ldmia 把r0存储的地址处的内容copy到 r3~r10 寄存器中, 然后
再copy 到 r1 存储的地址上去, r0 和 r1 都会 ++ ,
我的疑问是 按照上面 r3~r10 , 那一次 就会copy 8个字节 , 那万一
总共的字节数不是被8整除的呢? 比如 total=23 , 那么
循环了两次(每次都是8个字节),第三次就是 7个字节了, 这个时候 是怎么控制的呢?

ble 里面的 le是什么条件呢? 我怎么在arm指令里面找不到呢? only 找到 b , bx , bl
什么的。



谢谢大家了, 初学arm汇编, 有些地方比较懵啊。
----
[Original] [Print] [Top]
Subject: Re: 请教arm汇编,多谢了。
Author: IN_FLAMES    Posted: 2007-11-21 13:35    Length: 21 byte(s)
[Original] [Print] [Top]
pc都给ldr了还不跳转么
----
CLF最大的马甲
[Original] [Print] [Top]
Subject: Re: 请教arm汇编,多谢了。
Author: bob2004    Posted: 2007-11-21 13:39    Length: 433 byte(s)
[Original] [Print] [Top]
我知道跳转啊 , 可是 这么写:


ldr pc, _undefined_instruction
ldr pc, _software_interrupt
ldr pc, _prefetch_abort
ldr pc, _data_abort
ldr pc, _not_used
ldr pc, _irq
ldr pc, _fiq


我的意思是当发生irq , 怎么就自动执行: ldr pc, _irq
了 呢? 是这个疑问?
谢谢了。
----
[Original] [Print] [Top]
Subject: Re: 请教arm汇编,多谢了。
Author: IN_FLAMES    Posted: 2007-11-21 14:43    Length: 69 byte(s)
[Original] [Print] [Top]
那是arm体系结构的硬件决定的,如果有显式的跳转指令就不叫中断,叫轮询了
----
CLF最大的马甲
[Original] [Print] [Top]
Subject: Re: 请教arm汇编,多谢了。
Author: cdbdyx    Posted: 2007-11-22 09:35    Length: 174 byte(s)
[Original] [Print] [Top]
据我所知好像uboot不支持中断的

我觉得搬移代码假如8个字节,那每次都拷贝8个字节,假如要拷贝的没有对齐到8字节,那也无所谓,多拷贝几个字节对代码来说没什么影响吧
[Original] [Print] [Top]
Subject: Re: 请教arm汇编,多谢了。
Author: shinakira    Posted: 2007-11-22 15:08    Length: 33 byte(s)
[Original] [Print] [Top]
le应该是little or equal的意思~~
[Original] [Print] [Top]
Subject: Re: 请教arm汇编,多谢了。
Author: ovis_poly    Posted: 2007-11-22 17:14    Length: 329 byte(s)
[Original] [Print] [Top]
_start就是异常向量表的地址吧,呵呵,不晓得arm中是不是这么叫?
每个中断向量占32bit,arm的指令都是定长的。所以每个ldr就是表中的一项,某个异常产生,硬件就跳到向量表的相应表项,即ldr pc ,xxx,接着就跳到xxx了。

啊,我没仔细看你的帖子,你也说了这是异常向量表,那还有什么可疑惑的?异常向量表不就是这样的么?
[Original] [Print] [Top]
Subject: Re: 请教arm汇编,多谢了。
Author: littletiger    Posted: 2007-11-23 17:39    Length: 149 byte(s)
[Original] [Print] [Top]
有中断或者异常时,cpu会自动根据异常向量表跳转的。至于跳到向量表的哪个item上是硬件规定的。
另外,向量表的地址也是可以通过cp15更改的,默认为0.
----
[Original] [Print] [Top]
« Previous thread
是不是一个内核bug?
Linux内核技术
18
Next thread »
请教NUMA的问题
     

Copyright © 2007~2009 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
webmaster: webmaster@unixresources.net
This page created on 2009-09-07 16:26:33, cost 0.0311059951782 ms.