返回   cpper编程论坛 > Blog
注册账号 论坛帮助 会员列表 日历事件 搜索 今日新帖 标记版面已读

旧

ARM平台的对齐问题

发表于 2006-08-13 02:40 PM 作者: zweily
前言
ARM流行已久,做嵌入式开发的不知道ARM不大可能。鉴于其所具备的较低功耗下的较高性能,也就成了大多数嵌入式设备的首选了。
不过对于刚上手的人来说,有可能会遇到一些稀奇古怪的问题。毕竟大部分人都习惯了IA-32下的程序设计,虽然两者都是32位的处理器,但是体系架构完全不同,于是也导致了一些隐含的问题。这里想描述一下一个有点蛊惑的问题,即在ARM上访问非对齐地址内容,会出现所谓“不可预料”结果的问题。

ARM内存访问的对齐问题
按照ARM文档上的描述,其访问规则如下:
  1. 一次访问4字节内容,该内容的起始地址必须是4字节对齐的位置上;
  2. 一次访问2字节内容,该内容的起始地址必须是2字节对齐的位置上;
(单字节的没有这个问题,就不用考虑啦。 )

好,既然规则如此,那应该遵守。不过么,不安分的人往往喜欢破坏规则,喜欢看看不遵守规则会有什么结果;另外么,即便遵规蹈距的人,有时也难免考虑不周,犯个错也是正常现象。好,那么让我们来看看犯错的结果吧。例如下面的代码:...
zweily 的头像
版主
发表在 未分类
评论 0 zweily 当前离线
旧

Stack

发表于 2006-01-22 06:40 AM 作者: zweily
注:这篇是笔记,由于原先贴的地方贴图不方便,于是就简单地写了几句,先搬过来,改天我会补充完整的。

IA-32的stack是由高地址向低地址延伸的,所以PUSH指令会将栈顶指针递减,POP指令将栈顶指针递增。
有2个寄存器与stack相关,分别为EBP和ESP。
EBP指向当前stack frame的栈底位置,按照IA-32的Manual上的称法,EBP是“Pointer to data on the stack”,其实应该是一个Base...
zweily 的头像
版主
发表在 未分类
评论 0 zweily 当前离线
旧

System Call

发表于 2006-01-22 06:40 AM 作者: zweily
注:同上篇《Stack》,IA-32笔记,有空再作补充。

IA-32 before PentiumII —— 没有SYSENTER和SYSEXIT指令的年代

系统调用需要通过Exception Handler来Dispatch。对于Windows NT/2000而言,利用int 0x2e来实现。而在系统调用的时候,需要进行栈切换的工作。由于Interrupt/Exception Handler的调用都是通过 call/trap/task这一类的gate来实现的,这种方式会进行栈切换,并且系统栈的地址等信息由TSS提供。这种方式可能会引起多次内存访问(来获取这些切换信息),因此,从PentiumII开始,IA-32引入了新指令:SYSENTER/SYSEXIT。...
zweily 的头像
版主
发表在 未分类
评论 1 zweily 当前离线
旧

ZWeily的小品文(六)C++入门教程(5)

发表于 2006-01-22 06:39 AM 作者: zweily
§5 Exception & Reference

画外音:公司有人员变动是家常便饭。而新人好像总是先被派到我们小组,感觉我们这里越来越有新兵训练营的味道了。算算Young来这边也有段日子了,基本的东西也学得差不多了。本以为可以过上清静一些的日子了,可谁知道这两天又冒出来一只“困猫”。这家伙和Young不一样,有一些项目经验和底子,不过好像基本功不大扎实,于是乎,就有了下面的故事……...
zweily 的头像
版主
发表在 未分类
评论 0 zweily 当前离线
旧

ZWeily的小品文——《Something about TCP/IP》系列(1)

发表于 2006-01-22 06:39 AM 作者: zweily
引言

也许有不少朋友看过我的小品文系列(好像比较臭美了一点,呵呵),不过那一系列已经停滞了很久了,一直没有再写新的了,原因也许很多吧,不过自己比较懒也是一个原因。不过现在我既然做了ABP这边网络版块的斑竹么,应该稍微用功一点,多写点东西给大家分享。由于目前我平时一直和网络相关的东东打交道,所以就想把自己比较了解的一些知识写下来,我想总会有读者感觉有点收获的。...
zweily 的头像
版主
发表在 未分类
评论 0 zweily 当前离线

所有时间均为格林尼治时间 +9。现在的时间是 02:01 PM


Powered by vBulletin® 版本 3.7.0
版权所有 ©2000 - 2008,Jelsoft Enterprises Ltd.
(C) Copy Right All Right Reserved 2001 - 2007

Search Engine Friendly URLs by vBSEO 3.1.0