返回首页  设为首页  加入收藏  今天是:
网站首页电脑主板电脑cpu电脑内存电脑硬盘电脑显卡电脑电源显示器电脑配件电脑维修
相关文章
 ARM C C++内存对齐
 烽火通信申请 PCIe 设备优化…
 5月7日股市内参
 小Q推荐_小Q说本 天极网笔记…
 戴尔(中国)有限公司3月28日…
 戴尔国补政策到人民广场来福…
 如何获取电脑配件?五种方法…
 鸿蒙蝴蝶云(福州晋安)物联…
 【电脑硬件直批】_电脑硬件直…
 台式机硬盘在那个位置机械硬…
 黑神话悟空游戏电脑配置
 POE2一直加载加载不出无法卡…
 影驰RTX 50系显卡:美学与性…
 丽台推出 RTX 5060 Ti 显卡:…
 AMD旗舰显卡终于回归!全新U…
 创业板指涨195% 芯片产业链爆…
 5月29日十大人气股:融发核电…
 一季度基金众生相:科技主题…
 联想推ThinkVision T34WD-40…
 Voury卓华诚邀您莅临2025第2…
 华为智慧屏S6 Pro正式上线:…
 2025年笔记本电脑选购全攻略…
 15_18寸笔记本_行情
 天极网笔记本频道_购买手册_…
 旗舰纯白助力锐龙 七彩虹CVN…
 电脑主板接口全解析:让你一…
 华硕B850M AYW主板:太空风设…
 Karpathy 最新演讲精华:软件…
 七一书院-七一网
 Ollama v064 预发布版重磅更…
 女子苹果电脑从深圳寄甘肃弯…
 苹果平板电脑声音小怎么办
 安卓“断开源”手机市场“地…
 RTX 50系列显卡ROP单元缺失问…
 RTX 50系列莫名丢失8个ROP单…
 RTX 5080价格暴涨!未来可能…
 厦门联达兴专利:让电脑硬盘…
 如何通过超恩智能的新专利实…
 新电脑如何分区 电脑硬盘分区…
 英伟达发布新显卡RTX 50系列…
 全球首款显卡!英伟达宣布赠…
 黄仁勋变身美队皮衣开光追最…
 2025年台式电脑终极配置指南…
 2024年最佳台式机推荐:办公…
 AMD 锐龙8000G处理器:OEM商…
 微星618显示器新品首发 晒单…
 【25年7月显示器推荐】教父级…
 戴尔推S2725QCS2725QS显示器…
 组装电脑后如何测试硬件是否…
 ID-COOLING IS-40
专题栏目
网络
您现在的位置: 电脑评测网 >> 电脑内存 >> 正文
高级搜索
ARM C C++内存对齐
作者:佚名 文章来源:本站原创 点击数: 更新时间:2025/6/24 5:24:42 | 【字体:

  华锐k600对齐到自然尺寸边界上,以便通过使用 LDR和 STR 指令有效地存取这些变量。这种内存访问方式与多数 CISC (Complex Instruction Set Computing)体系结构不同,在CISC体系结构下,指令直接存取未对齐的数据。因而,当需要将代码从CISC 体系结构向 ARM 处理器移植时,内存访问的地址对齐问题必须予以注意。在RISC体系结构下,存取未对齐数据无论在代码尺寸或是程序执行效率上,都将付出非常大的代价。

  C和C++编程标准规定,指向某一数据类型的指针,必须和该类型的数据地址对齐方式一致,所以ARM 编译器期望程序中的 C 指针指向存储器中字对齐地址,因为这可使编译器生成更高效的代码。

  比如,如果定义一个指向 int 数据类型的指针,用该指针读取一个字,ARM 编译器将使用LDR 指令来完成此操作。如果读取的地址为四的倍数(即在一个字的边界)即能正确读取。但是,如果该地址不是四的倍数,那么,一条 LDR 指令返回一个循环移位结果,而不是执行真正的未对齐字载入。循环移位结果取决于该地址向对于字的边界的偏移量和系统所使用的端序(Endianness)。例如,如果代码要求从指针指向的地址 0x8006 载入数据,即要载入 0x8006、0x8007、0x8008 和 0x8009 四字节的内容。但是,在 ARM 处理器上,这个存取操作载入了0x8004、0x8005、0x8006 和 0x8007 字节的内容。这就是在未对齐的地址上使用指针存取所得到的循环移位结果。

  因而,如果想将指针定义到一个指定地址(即该地址为非自然边界对齐),那么在定义该指针时,必须使用 __packed 限定符来定义指针: 例如,

  使用了_packed限定符限定之后,ARM 编译器将产生字节存取命令(LDRB或STRB指令)来存取内存,这样就不必考虑指针对齐问题。所生成的代码是字节存取的一个序列,或者取决于编译选项、跟变量对齐相关的移位和屏蔽。但这会导致系统性能和代码密度的损失。

  值得注意的是,不能使用 __packed 限定的指针来存取存储器映射的外围寄存器,因为 ARM 编译程序可使用多个存储器存取来获取数据。因而,可能对实际存取地址附近的位置进行存取,而这些附近的位置可能对应于其它外部寄存器。当使用了位字段(Bitfield)时, ARM 程序将访问整个结构体,而非指定字段。

  在ARM中,通常希望字单元的地址是字对齐的(地址的低两位为0b00),半字单元的地址是半字对齐的(地址的最低为0b0).在存储访问操作中,如果存储单元的地址没有遵守上述的对齐规则,则称为非对齐(unaligned)的存储访问操作.

  最后两句代码,从奇数边界去访问unsignedshort型变量,显然不符合对齐的规定。

  在x86上,类似的操作只会影响效率,但是在MIPS或者sparc上,可能就是一个error,因为它们要求必须字节对齐.

  就要用到此命令__align(8)进行修饰限制。来保证数据对象是相应对齐。

  __align是存储类修改,他只修饰最高级类型对象不能用于结构或者函数对象。

  3.float及包含float的结构联合及未用__packed的对象将不能字节对齐

  5.强制由unpacked对象向packed对象转化是未定义,整形指针可以合法定

  //在栈中访问b可能有问题,因为栈上数据肯定是对齐访问[from CL]

  __packed int* q; //此时定义成__packed来修饰当前q指向为非对齐的数据地址下面的访问则可以

  如果q没有加__packed修饰则汇编出来指令是这样直接会导致奇地址处访问失败

电脑内存录入:admin    责任编辑:admin 
  • 上一个电脑内存:

  • 下一个电脑内存: 没有了
  •  
     栏目文章
    普通电脑内存 ARM C C++内存对齐 (06-24)
    普通电脑内存 烽火通信申请 PCIe 设备优化内存分配专利能在… (06-24)
    普通电脑内存 5月7日股市内参 (06-24)
    普通电脑内存 Karpathy 最新演讲精华:软件30时代每个人都是… (06-23)
    普通电脑内存 七一书院-七一网 (06-23)
    普通电脑内存 Ollama v064 预发布版重磅更新! (06-23)
    普通电脑内存 颀中科技:公司具备向HBM产业相关内存芯片的先… (06-22)
    普通电脑内存 2025年内存产品价格暴涨!上涨幅度竟达20%! (06-22)
    普通电脑内存 内存产品价格上涨 订单积压存储生产企业加紧扩… (06-22)
    普通电脑内存 EXPO COMM MEXICO (06-21)
    普通电脑内存 第39届《福布斯》全球亿万富豪榜TOP200张、钟… (06-21)
    普通电脑内存 太冤了!67岁华裔老翁被判15年监禁竟因捡到一… (06-21)
    普通电脑内存 存储下一个 “新宠” (06-20)
    普通电脑内存 芝奇发布DDR5-8000 128GB (64GBx2)极速超频内… (06-20)
    普通电脑内存 全球首发! DDR5 6000 CL32 256GB内存套装来了 (06-20)
    普通电脑内存 硬盘式数码摄像机频道 (06-19)
    普通电脑内存 黄页在线免费观看视频 (06-19)
    普通电脑内存 颠覆性突破!六大存储芯片完全具备国产替代能… (06-19)
    普通电脑内存 GPU性能超过NVIDIA!AMD这次又YES了 (06-17)
    普通电脑内存 京鲁智能创研(北京)科技有限公司成立注册资… (06-17)