对齐宏内核
发布时间:2020-12-16 05:45:05 所属栏目:百科 来源:网络整理
导读:我无法理解这个宏是什么.这些在 linux内核中定义,但我的疑问是独立的.我无法理解(((x)(mask))?(mask))行是什么. #define ALIGN(x,a) __ALIGN_MASK(x,(typeof(x))(a)-1)#define __ALIGN_MASK(x,mask) (((x)+(mask))~(mask)) 任何帮助赞赏. 解决方法 假设你有
我无法理解这个宏是什么.这些在
linux内核中定义,但我的疑问是独立的.我无法理解(((x)(mask))&?(mask))行是什么.
#define ALIGN(x,a) __ALIGN_MASK(x,(typeof(x))(a)-1) #define __ALIGN_MASK(x,mask) (((x)+(mask))&~(mask)) 任何帮助赞赏. 解决方法
假设你有一个数字:0x1006
由于某些原因,您希望将其与4个字节的边界对齐. 使用4字节边界,您知道对齐的值为0x1000,0x1004,0x1008等 你会如何获得0x1008?对齐值4的对准掩模为(4 – 1)= 0x03 现在0x1006 0x03 = 0x1009和0x1009& ?0x03 = 0x1008 此操作是__ALIGN_MASK宏. 如果要传递值4(对齐方式)而不是直接传递0x03(对齐掩码),则具有ALIGN宏 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |