如何使用算术和掩码舍入地址?

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地址和掩码并进行分类统计

在 Java 代码中获取错误以查找有关子网和掩码的信息 [重复]

识别有效的IP地址和掩码并进行分类统计

牛客 HJ18 识别有效的IP地址和掩码并进行分类统计