LockedX
2022-09-02
来自湖北
结构体要根据是否指针传递来判断传参方式: 1. 值传递 这种情况下,会把结构体里面的变量当作参数来传递,有多少个参数就会使用多少个参数寄存器,和多参数函数传参一样 2. 指针传递 这个时候用a0寄存器传递指针就可以完成结构体参数传递 所以尽量用指针传递结构体参数(只利用了一个寄存器)能提高性能
作者回复: 是的
3
TableBear
2022-08-30
来自湖北
根据C变量那一节的内容,结构体的存储格式是一块整齐的连续内存,里面聚合了各种类型的变量。所以C语言函数传递结构体类型参数时,应该是将整个结构体拆散,然后每种类型的字段按照对应的传参方式进行传递。
作者回复: 有很多种方法 你说的算一种
2
苏流郁宓
2022-08-29
来自湖北
请问 C 语言函数如何传递结构体类型的参数呢? 建立栈模型?(一类先进后出的数据类型),但栈是加载到内存上,也就是加到cpu内部,就是一组组数据指令,实际上,cpu运算器90%以上的时间是和寄存器与cache打交道,毕竟从内存直接取数据效率过低! 纵然如此,cpu的浪费也是惊人的(意味着,仍然有很多资源没有充分利用好,就比如维护数据一致性导致的浪费) 俺有个不懂的问题。由于内存到cpu的时间效率低于cpu内部效率,那能不能优化数据结构,把命中率高的数据在cpu运算时,加载到cache上?(这个加不加载到cache上应该是硬件工程师考虑的吧),方便及时取数据!
作者回复: 你说对 ,但也是软件工程师该考虑优化的点 这需要软硬结合
1