Linux kernel 使用get_unaligned_leX()时,向参数添加值的目的是什么?
例如,在Linux kernel 使用get_unaligned_leX()时,向参数添加值的目的是什么?,linux-kernel,endianness,Linux Kernel,Endianness,例如,在/crypto/nhpoly1305.c中: 42 static void nh_generic(const u32 *key, const u8 *message, size_t message_len, 43 __le64 hash[NH_NUM_PASSES]) 44 { 45 u64 sums[4] = { 0, 0, 0, 0 }; 46 47 BUILD_BUG_ON(NH_PAIR_
/crypto/nhpoly1305.c
中:
42 static void nh_generic(const u32 *key, const u8 *message, size_t message_len,
43 __le64 hash[NH_NUM_PASSES])
44 {
45 u64 sums[4] = { 0, 0, 0, 0 };
46
47 BUILD_BUG_ON(NH_PAIR_STRIDE != 2);
48 BUILD_BUG_ON(NH_NUM_PASSES != 4);
49
50 while (message_len) {
51 u32 m0 = get_unaligned_le32(message + 0);
52 u32 m1 = get_unaligned_le32(message + 4);
53 u32 m2 = get_unaligned_le32(message + 8);
54 u32 m3 = get_unaligned_le32(message + 12);
添加到参数中的这些值的含义是什么?我假设它与位/字节有关…消息中的字节偏移量。@偏移量是如何确定的?
message+0
获取前4个字节<代码>消息+4获取下一个4,等等@stark啊好的,明白了。谢谢你可以考虑<代码> U16*BUF;u32数据。。。获取未对齐的le32(buf+)代码>。在这种情况下,XX将对应于偏移量(buf+2*XX)字节。这是一个C语言规范(标准),规定了这一点。消息中的字节偏移量。@偏移量是如何确定的?message+0
获取前4个字节<代码>消息+4获取下一个4,等等@stark啊好的,明白了。谢谢你可以考虑<代码> U16*BUF;u32数据。。。获取未对齐的le32(buf+)代码>。在这种情况下,XX将对应于偏移量(buf+2*XX)字节。这是一个C语言规范(标准),规定了这一点。