如何使用算术和掩码舍入地址?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用算术和掩码舍入地址?相关的知识,希望对你有一定的参考价值。
我有一个指针ptr
,它的地址在内核堆栈空间。
我想使用这个ptr
到达进程描述符地址。
由于内核堆栈空间和进程描述符大小一起为8kb,我知道我需要向下舍入ptr
的地址以获取进程描述符的地址。
(具有内核堆栈且进程描述符的块以地址编号为8的乘法开始)
我怎么能在宏中这样做?我需要使用什么面膜?
答案
我会做这样的事情:
#include <stdint.h>
#define MASK 0x01FF
int a = 0;
intptr_t b = (intptr_t)&a;
b &=~MASK;
int * c= (int *)b;
inptr_t是一个足以容纳指针的类型,这就是为什么我选择它超过标准整数
以上是关于如何使用算术和掩码舍入地址?的主要内容,如果未能解决你的问题,请参考以下文章
在 Python 中从 IP 地址和掩码长度获取 IP 掩码
华为机试真题详解JAVA实现—识别有效的IP地址和掩码并进行分类统计