社区
C语言
帖子详情
地址必须64位对齐,这个编程怎么实现?
leehh
2011-08-23 06:13:14
我现在在uboot下做一个接口的驱动,有一个寄存器地址说要64位对齐,我在程序里申请了一个32位的指针,但此时不是已经有地址了么?我怎么保证它是64位对齐的呢?
我把这个指针的地址打印出来看了下为0xc10c278c,这个应该没有64位对齐吧?
...全文
397
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
打赏
举报
回复
帮顶,问题看得不是很清楚。水平不高,帮不了。
W25Q64 Flash驱动详解:SPI协议、页
编程
与存储规划
NOR Flash 是嵌入式系统中关键的非易失性存储介质,其核心原理基于 SPI 串行通信协议与页/扇区擦写机制。理解 Flash 的命令时序、状态轮询(如 WIP 标志检测)和
地址
对齐
约束,是保障数据写入可靠性的技术基础。W25Q64 作为典型代表,支持标准 SPI Mode 0、256B 页
编程
与 4KB 扇区擦除,广泛应用于 STM32 等 Cortex-M 平台的数据记录、固件升级与参数存储场景。工程实践中需兼顾硬件抽象(如 CS 引脚可配置)、时钟稳定性(18MHz 安全阈值)与低功耗管理(深度掉
64位
编程
模型:为什么要使用LP64(一)
摘要 开放式系统社区(Open System community)目前有一个好时机可以决定如何
实现
64-bit架构的支持。本文中列出的种种技术事实无不证明了,相对于其他
编程
模型(ILP64和LLP64),LP64是一种更好的64-bit
编程
解决方案。主要的评估指标包括可移植性、32-bit环境的兼容性、标准的一致性、性能影响以及转换代价;在我们针对这些指标分析每一种数据模型的过程中,LP64毫无
64位
ROP链实战 —— 从栈
对齐
到system调用
摘要:本文详细讲解了在
64位
NX保护环境下如何绕过安全限制,通过ROP链构造
实现
system("/bin/sh")调用。重点解决了栈
对齐
问题和pop rdi gadget缺失的难点,展示了从漏洞程序分析、
地址
收集到ROP链构造的全过程。实验环境基于Ubuntu 20.04/22.04,使用GCC 9.4.0编译存在栈溢出漏洞的程序,通过精心设计的payload(包含ret gadget
对齐
、pop rdi参数设置和system调用)最终成功获取shell。文章还对比了ret2win与RO
C++字节
对齐
(
地址
对齐
)
1、什么是字节
对齐
现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何
地址
开始,但实际情况是,在访问特定类型变量的时候经常在特定的内存
地址
访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是
对齐
。 说白了字节
对齐
,就是
地址
对齐
,变量的存放不是一个挨着一个按照变量大小进行空间分配,而是按照一定的规则在指定的
地址
上给变量逐一分配空间。 2、字节
对齐
的原因和作用 各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型
32位进程与
64位
系统内存交互技术
实现
本文还有配套的精品资源,点击获取 简介:在IT系统
编程
中,32位进程与
64位
内存的交互是一个关键技术话题。本文针对32位进程如何在
64位
系统中读写内存进行了探讨,包括技术挑战和解决方案。使用C++语言和Windows API
实现
,如 ReadProcessMemory 和 WriteProcessMemory ,展示了32位进程如何通过Wow64...
C语言
70,040
社区成员
243,237
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章