当前位置: 首页>>代码示例>>C++>>正文


C++ X86Compiler::jnz方法代码示例

本文整理汇总了C++中X86Compiler::jnz方法的典型用法代码示例。如果您正苦于以下问题:C++ X86Compiler::jnz方法的具体用法?C++ X86Compiler::jnz怎么用?C++ X86Compiler::jnz使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在X86Compiler的用法示例。


在下文中一共展示了X86Compiler::jnz方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: compile

  virtual void compile(X86Compiler& c)
  {
    c.newFunc(kX86FuncConvDefault, FuncBuilder3<Void, uint32_t*, const uint32_t*, size_t>());
    c.getFunc()->setHint(kFuncHintNaked, true);    // Omit unnecessary prolog/epilog.

    Label L_Loop = c.newLabel();                   // Create base labels we use
    Label L_Exit = c.newLabel();                   // in our function.

    GpVar dst(c.getGpArg(0));                      // Get reference to function
    GpVar src(c.getGpArg(1));                      // arguments.
    GpVar cnt(c.getGpArg(2));

    c.alloc(dst);                                  // Allocate all registers now,
    c.alloc(src);                                  // because we want to keep them
    c.alloc(cnt);                                  // in physical registers only.

    c.test(cnt, cnt);                              // Exit if length is zero.
    c.jz(L_Exit);

    c.bind(L_Loop);                                // Bind the loop label here.

    GpVar tmp(c.newGpVar(kX86VarTypeGpd));         // Copy a single dword (4 bytes).
    c.mov(tmp, dword_ptr(src));
    c.mov(dword_ptr(dst), tmp);

    c.add(src, 4);                                 // Increment dst/src pointers.
    c.add(dst, 4);

    c.dec(cnt);                                    // Loop until cnt isn't zero.
    c.jnz(L_Loop);

    c.bind(L_Exit);                                // Bind the exit label here.
    c.endFunc();                                   // End of function.
  }
开发者ID:AmesianX,项目名称:asmjit-1,代码行数:34,代码来源:testx86.cpp


注:本文中的X86Compiler::jnz方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。