-
Notifications
You must be signed in to change notification settings - Fork 337
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
求教 arm架构下为什么指令地址是栈帧地址末位置0得到的 #13
Comments
指令寄存器地址=framePointer地址-1, |
在arm64架构下地址指针的长度是47位比如一个地址指针是0x7faf1b580450 转换成二进制 11111111010111100011011010110000000010001010000 最后的3位是没有用的,可以用来存储其它的信息,所以我们在取地址的时候要忽略掉最后面的三位 |
ARM64 处理器ios的指针存储长度为36(0x100f0bd50),有效长度为33,有效长度33中有3位用于对齐, 也就是说最终的有效长度为30, X86_64 处理器ios 的指针存储长度为48(0x7f8221c10c90), 有效长度为47, 有效长度47中有3位用于对齐,也就是说最终的有效长度为44 |
arm64 指针是4字节对齐,arm 指针是2字节对齐,x86_64和i386 都是1字节对齐,通过IDA反汇编可以清晰的看到指针长度 |
|
末两个为0,不就是4个的整数倍吗 |
末两个为0,不就是4个的整数倍吗
在 2020-05-15 18:16:15,"YaoJuan" <[email protected]> 写道:
arm64 指针是4字节对齐,arm 指针是2字节对齐,x86_64和i386 都是1字节对齐,通过IDA反汇编可以清晰的看到指针长度
const uintptr_t reAddress = ((address) & ~(3UL)); 有一点疑问,这个不是把address末两位置0吗
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
你好,这个有相关的文档可以看么 |
懂了,谢谢 |
const uintptr_t reAddress = ((address) & ~(3UL));
const uintptr_t reAddress = ((address) & ~(1UL));
没有找到相关理论 依据
The text was updated successfully, but these errors were encountered: