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语言规范(标准),规定了这一点。