2 lgp8z lgp8z 于 2016.03.16 12:18 提问

常值整形变量如何直接编译成立即数

我定义了一个数组,存有结构体成员的相对地址,我想在循环里分别把结构体中的成员取出,这样的话我能用数组定位,这个数组很明显是个常量。那么问题就是编译的时候如何直接把这个常量以立即数的形式直接编译到单条指令里。我要处理的结构体很多,想提高效率。

2个回答

John_ToStr
John_ToStr   Rxr 2016.03.16 14:42

你的意思是数组长度是一定的,因为你的结构体数目一定。所以你需要定义一个宏 #define NUM_OF_STRUCT 结构体数量

然后long addrOfStruct[NUM_OF_STRUCT]; 其他的不可能编译时确定,结构体的空间是运行时开辟的

caozhy
caozhy   Ds   Rxr 2016.03.17 04:52

编译器在通常情况下会生成比你更好的代码。现代超标量处理器的优化非常复杂,指令集并行、缓存命中、寄存器重命名、分支预测等等都是编译器优化要考虑的问题,单条指令上你觉得优化了,但是打破了编译器的整体优化,得不偿失。

Csdn user default icon
上传中...
上传图片
插入图片