• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >嵌入式开发 > gnuld链接脚本引入的字节对齐问题,求解

gnuld链接脚本引入的字节对齐问题,求解

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-05

佚名通过本文主要向大家介绍了字节对齐问题,readl的字节序问题,字节,字节换算,一个字节多少位等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: gnu ld 链接脚本引入的字节对齐问题,求解
描述:

链接脚本 字节对齐

gnu ld 链接脚本片段:
    . = ALIGN(4);
    _device_enmu_start = .;
     *(.data.enmu.dev)
    _device_enmu_end = .;
源代码中定义了两个struct A (共20字节)的结构体全局变量,放在data.enmu.dev特定的数据段中。本意是想 _device_enmu_start 这个脚本变量,指向结构体的首地址。通过 _device_enmu_start 遍历出struct A 类型的所有数据。
而实际反汇编查看到,_device_enmu_start  和结构体首地址之间,增加了4字节0,作为填充!! 导致它不能指向结构体首地址,程序错误!
804bf614 <_device_enmu_start>:
804bf614: 00000000  nop <---- 这个就是添加的额外4字节
804bf618 <__device__AAAAAA>: <---- 这里才是结构体首地址
804bf618: 80458be8  lb a1,-29720(v0)
804bf61c: 80458bf8  lb a1,-29704(v0)
804bf620: 80458c08  lb a1,-29688(v0)
804bf624: 804980a8  lb a5,-32600(v0)
804bf628: 12345678
...
如何禁止掉链接器自动添加的字节,使得全局变量紧密排列?


解决方案1:

那你不要设置字节对齐啊,他为了字节对其在前面添加的。    . = ALIGN(4); 删掉


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • gnuld链接脚本引入的字节对齐问题,求解

相关文章

  • 2017-06-05 求助:win764bit内核驱动开发蓝屏问题
  • 2017-06-05 DeviceIoControl的问题
  • 2017-06-05 verilog十六位减法器每一秒减一
  • 2017-06-05 NETCFv35Messageszh-CHSwmcab
  • 2017-06-05 USB设备请求的响应
  • 2017-06-05 有没有mqtt协议应用到wince平台相关的资料?
  • 2017-06-05 [stm32]无法使用printf进行串口输出
  • 2017-06-05 有做过SmartCard智能卡非接触式读卡器驱动开发的吗?SmartcardInitialize返回失败,如何破?
  • 2017-06-05 wince程序调试出现问题
  • 2017-06-05 lua计算字符串长度为什么推荐用#而不推荐用stringlen()

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • μC/OS-II简介
    • wince60车机系统求解决GPS端口释放问题
    • 请各位大侠求命,关于安装inf
    • 关于STM32的I2C从机模式程序要什么写
    • Mac上安装lua的编辑器?
    • 双系统的引导文件是添加到MBR中还是bootmgr,双系统是不是有两个bootmgr?
    • 关于lua语言的两个小疑问
    • Windriver安装失败求救
    • 智能卡芯片是什么?
    • 4412的usb20两层板走差分对,这样可以么?

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有