求教 arm架构下为什么指令地址是栈帧地址末位置0得到的
const uintptr_t reAddress = ((address) & ~(3UL)); const uintptr_t reAddress = ((address) & ~(1UL)); 没有找到相关理论 依据
指令寄存器地址=framePointer地址-1,const uintptr_t reAddress = ((address) & ~(3UL)); 这个结果相当于address-1,只是在不同cpu架构下写的方式不同 ,这个理解对吗? @ming1016 请大佬指正~
在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反汇编可以清晰的看到指针长度
arm64 指针是4字节对齐,arm 指针是2字节对齐,x86_64和i386 都是1字节对齐,通过IDA反汇编可以清晰的看到指针长度 const uintptr_t reAddress = ((address) & ~(3UL)); 有一点疑问,这个不是把address末两位置0吗
末两个为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.
ARM64 处理器ios的指针存储长度为36(0x100f0bd50),有效长度为33,有效长度33中有3位用于对齐, 也就是说最终的有效长度为30, X86_64 处理器ios 的指针存储长度为48(0x7f8221c10c90), 有效长度为47, 有效长度47中有3位用于对齐,也就是说最终的有效长度为44
你好,这个有相关的文档可以看么
ARM64 处理器ios的指针存储长度为36(0x100f0bd50),有效长度为33,有效长度33中有3位用于对齐, 也就是说最终的有效长度为30, X86_64 处理器ios 的指针存储长度为48(0x7f8221c10c90), 有效长度为47, 有效长度47中有3位用于对齐,也就是说最终的有效长度为44
还有 为什么 pc不用 像lr那样做对齐处理((address) & ~(3UL))

ARM64 处理器ios的指针存储长度为36(0x100f0bd50),有效长度为33,有效长度33中有3位用于对齐, 也就是说最终的有效长度为30, X86_64 处理器ios 的指针存储长度为48(0x7f8221c10c90), 有效长度为47, 有效长度47中有3位用于对齐,也就是说最终的有效长度为44
还有 为什么 pc不用 像lr那样做对齐处理((address) & ~(3UL))
因为pc本来就是4个字节对齐的啊,看汇编代码,pc都是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.
懂了,谢谢