社区
C语言
帖子详情
地址必须64位对齐,这个编程怎么实现?
leehh
2011-08-23 06:13:14
我现在在uboot下做一个接口的驱动,有一个寄存器地址说要64位对齐,我在程序里申请了一个32位的指针,但此时不是已经有地址了么?我怎么保证它是64位对齐的呢?
我把这个指针的地址打印出来看了下为0xc10c278c,这个应该没有64位对齐吧?
...全文
377
17
打赏
收藏
地址必须64位对齐,这个编程怎么实现?
我现在在uboot下做一个接口的驱动,有一个寄存器地址说要64位对齐,我在程序里申请了一个32位的指针,但此时不是已经有地址了么?我怎么保证它是64位对齐的呢? 我把这个指针的地址打印出来看了下为0xc10c278c,这个应该没有64位对齐吧?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
AnYidan
2011-08-24
打赏
举报
回复
[Quote=引用 6 楼 mymtom 的回复:]
C/C++ code
ptr_save = malloc();
ptr = (ptrsave + 7) & ~7
[/Quote]
++
didijiji
2011-08-24
打赏
举报
回复
听明白你的意思了,但是不知道该怎么实现。
leehh
2011-08-24
打赏
举报
回复
[Quote=引用 14 楼 bjtbjt 的回复:]
不知道具体是什么对齐
呢
[/Quote]
很多人没明白我说的是什么对齐,其实这个寄存器是一块内存的首地址,要求内存空间8字节对齐。
5t4rk
2011-08-23
打赏
举报
回复
不知道具体是什么对齐
呢
proorck6
2011-08-23
打赏
举报
回复
int x;
x=x/64*64;
你要的是这个么?
鼠
2011-08-23
打赏
举报
回复
晕,没看到你用的是 uboot……
如果没有合适的库函数的话,就像 #6 楼那样多分配 7 个字节然后手动对齐吧……
鼠
2011-08-23
打赏
举报
回复
Windows 下用这个:
http://msdn.microsoft.com/en-us/library/8z34s9c6(vs.71).aspx
Linux 用这个:
http://linux.die.net/man/3/posix_memalign
icemornings
2011-08-23
打赏
举报
回复
[Quote=引用 6 楼 mymtom 的回复:]
C/C++ code
ptr_save = malloc();
ptr = (ptrsave + 7) & ~7
[/Quote]
++
吾子墨鸿
2011-08-23
打赏
举报
回复
在头文件里面包含
#pragma (8)
就可以了
wangw89
2011-08-23
打赏
举报
回复
[Quote=引用 7 楼 0153 的回复:]
一般可以这么做:
原指针 = 分配(预订字节数+8);
实际指针 = ((原指针 >> 3) + 1) << 3;
...
外部寄存器 = 实际指针;
...
释放(原指针);
[/Quote]嗯
0153
2011-08-23
打赏
举报
回复
一般可以这么做:
原指针 = 分配(预订字节数+8);
实际指针 = ((原指针 >> 3) + 1) << 3;
...
外部寄存器 = 实际指针;
...
释放(原指针);
mymtom
2011-08-23
打赏
举报
回复
ptr_save = malloc();
ptr = (ptrsave + 7) & ~7
nightkids_008
2011-08-23
打赏
举报
回复
#pagrma
leehh
2011-08-23
打赏
举报
回复
不好意思,datasheet里是这么说的:
The address can reside in any available memory space,but it must be aligned to a 64-bit boundary.
我上面的理解有问题吗?
ringer564597
2011-08-23
打赏
举报
回复
哎。。你说的对齐是什么意思。。
ringer564597
2011-08-23
打赏
举报
回复
struct 自动对齐
CJacky++
2011-08-23
打赏
举报
回复
帮顶,问题看得不是很清楚。水平不高,帮不了。
go+tcp网络
编程
本文深入探讨了127.0.0.1这一特殊IP
地址
的通信原理,揭示其仅限于本地通信的特性,并以Redis为例说明非本机访问受限的原因。此外,文章还剖析了
64位
机器的字节
对齐
原则,以及Go语言在网络
编程
中的异步处理机制,包括net库中Flush方法的行为和超时控制的
实现
细节。
W25Q64 Flash驱动详解:SPI协议、页
编程
与存储规划
本文深入剖析W25Q64 NOR Flash的SPI驱动
实现
,涵盖硬件抽象(CS引脚统一配置)、SPI时钟分频策略、命令集建模、页
编程
(256B限长与
地址
对齐
)、状态轮询(WIP位检测)、批量写入分页逻辑、深度掉电管理及存储空间分层规划。重点突出写入可靠性闭环、JEDEC ID校验、扇区擦除前提、数据完整性验证(Write-Read-Compare)等关键技术实践。
64位
编程
模型:为什么要使用LP64(一)
本文探讨了在
64位
系统环境下选择合适的
编程
模型的重要性。随着硬件技术的发展,特别是对更大
地址
空间的需求,文章对比分析了LP64、ILP64和LLP64三种模型的特点,并认为LP64模型在兼容性、标准一致性及性能等方面表现最优。
64位
ROP链实战 —— 从栈
对齐
到system调用
本文详述在NX保护启用下,针对
64位
Linux二进制程序构造ROP链调用system('/bin/sh')的技术过程。核心涵盖
64位
ABI调用约定、RSP 16字节栈
对齐
原理及修复方法(插入ret gadget)、关键gadget定位(pop rdi; ret)、/bin/sh与system@plt
地址
提取,以及完整利用脚本
实现
。重点解决因栈不
对齐
导致的SIGSEGV崩溃等典型问题。
C++字节
对齐
(
地址
对齐
)
本文详细阐述了字节
对齐
的概念,解释了为何在
编程
中进行
对齐
,通过实例展示了不同架构下对不同类型数据的
对齐
规则,以及如何通过编译器指令控制
对齐
方式。特别关注了x86_64平台的默认
对齐
策略和结构体大小计算。
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章