本文整理汇总了C++中X86Compiler::sub方法的典型用法代码示例。如果您正苦于以下问题:C++ X86Compiler::sub方法的具体用法?C++ X86Compiler::sub怎么用?C++ X86Compiler::sub使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类X86Compiler
的用法示例。
在下文中一共展示了X86Compiler::sub方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: compile
virtual void compile(X86Compiler& c)
{
c.newFunc(kX86FuncConvCompatFastCall, FuncBuilder1<int, int*>());
c.getFunc()->setHint(kFuncHintNaked, true);
GpVar buf(c.getGpArg(0));
GpVar acc0(c.newGpVar(kX86VarTypeGpd));
GpVar acc1(c.newGpVar(kX86VarTypeGpd));
c.mov(acc0, 0);
c.mov(acc1, 0);
uint i;
for (i = 0; i < 4; i++)
{
{
GpVar ret = c.newGpVar(kX86VarTypeGpd);
GpVar ptr = c.newGpVar(kX86VarTypeGpz);
GpVar idx = c.newGpVar(kX86VarTypeGpd);
c.mov(ptr, buf);
c.mov(idx, imm(i));
X86CompilerFuncCall* fCall = c.call((void*)calledFunc);
fCall->setPrototype(kX86FuncConvCompatFastCall, FuncBuilder2<int, int*, int>());
fCall->setArgument(0, ptr);
fCall->setArgument(1, idx);
fCall->setReturn(ret);
c.add(acc0, ret);
}
{
GpVar ret = c.newGpVar(kX86VarTypeGpd);
GpVar ptr = c.newGpVar(kX86VarTypeGpz);
GpVar idx = c.newGpVar(kX86VarTypeGpd);
c.mov(ptr, buf);
c.mov(idx, imm(i));
X86CompilerFuncCall* fCall = c.call((void*)calledFunc);
fCall->setPrototype(kX86FuncConvCompatFastCall, FuncBuilder2<int, int*, int>());
fCall->setArgument(0, ptr);
fCall->setArgument(1, idx);
fCall->setReturn(ret);
c.sub(acc1, ret);
}
}
GpVar ret(c.newGpVar());
c.mov(ret, acc0);
c.add(ret, acc1);
c.ret(ret);
c.endFunc();
}