本文整理汇总了C++中X86Compiler::lea方法的典型用法代码示例。如果您正苦于以下问题:C++ X86Compiler::lea方法的具体用法?C++ X86Compiler::lea怎么用?C++ X86Compiler::lea使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类X86Compiler
的用法示例。
在下文中一共展示了X86Compiler::lea方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: compile
virtual void compile(X86Compiler& c)
{
switch (_argsCount)
{
case 0: c.newFunc(kX86FuncConvDefault, FuncBuilder0<int>()); break;
case 1: c.newFunc(kX86FuncConvDefault, FuncBuilder1<int, int>()); break;
case 2: c.newFunc(kX86FuncConvDefault, FuncBuilder2<int, int, int>()); break;
case 3: c.newFunc(kX86FuncConvDefault, FuncBuilder3<int, int, int, int>()); break;
}
if (_naked ) c.getFunc()->setHint(kFuncHintNaked, true);
if (_pushPop) c.getFunc()->setHint(kX86FuncHintPushPop, true);
GpVar gvar(c.newGpVar());
XmmVar xvar(c.newXmmVar(kX86VarTypeXmm));
// Alloc, use and spill preserved registers.
if (_varsCount)
{
uint var = 0;
uint index = 0;
uint mask = 1;
uint preserved = c.getFunc()->getDecl()->getGpPreservedMask();
do {
if ((preserved & mask) != 0 && (index != kX86RegIndexEsp && index != kX86RegIndexEbp))
{
GpVar somevar(c.newGpVar(kX86VarTypeGpd));
c.alloc(somevar, index);
c.mov(somevar, imm(0));
c.spill(somevar);
var++;
}
index++;
mask <<= 1;
} while (var < _varsCount && index < kX86RegNumGp);
}
c.alloc(gvar, zax);
c.lea(gvar, xvar.m());
c.and_(gvar, imm(15));
c.ret(gvar);
c.endFunc();
}