我知道我可以使用以下代码循环遍历指令的操作数:
unsigned i = 0;
unsigned e = I ->getNumOperands();
while(i != e) {
Value *operand = I->getOperand(i);
i++;
}
但是如何区分源操作数和目标操作数?
答案 0 :(得分:1)
目的地不是操作数。该指令代表结果。
循环返回的指令列表将从左到右给出参数,但指令是结果。
所以,如果指令是
%X =添加i32%a,2,I-> getOperand(0)将返回%*的值*,而I-> getOperand(1)将返回i *的值*
然而,指令(add)是结果==> %X