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


C++ X64Assembler::emitI方法代码示例

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


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

示例1: testEmitMethods

void testEmitMethods() {
  X64Assembler e;
  e.init(10 << 20);

  using namespace HPHP::VM::Transl::reg;

  int n = sizeof(instr_list) / sizeof(instr_list[0]);
  for (int i = 0; i < n; ++i) {

    X64Instr op = instr_list[i];
    printf("%s:\n", instr_names[i]);

    if (supported_AM[i] & MASK_none) {
      printf("  Address mode: none\n");
      e.emit(op);
    }

    if (supported_AM[i] & MASK_R) {
      printf("  Address mode: R\n");
      e.emitR(op, rax);
      e.emitR(op, rsi);
      e.emitR(op, rbp);
      e.emitR(op, rsp);
      e.emitR(op, r8);
      e.emitR(op, r15);
      e.emitR(op, r13);
      e.emitR(op, r12);
    }

    if (supported_AM[i] & MASK_RR) {
      printf("  Address mode: RR\n");
      e.emitRR(op, rsi, rax);
      e.emitRR(op, rax, rdi);
      e.emitRR(op, rsi, rdi);
      e.emitRR(op, rbp, rsp);
      e.emitRR(op, rsp, rbp);
      e.emitRR(op, rsi, r8);
      e.emitRR(op, rax, r15);
      e.emitRR(op, rsi, r15);
      e.emitRR(op, rbp, r12);
      e.emitRR(op, rsp, r13);
      e.emitRR(op, r14, rax);
      e.emitRR(op, r8,  rdi);
      e.emitRR(op, r14, rdi);
      e.emitRR(op, r13, rsp);
      e.emitRR(op, r12, rbp);
      e.emitRR(op, r14, r8);
      e.emitRR(op, r8,  r15);
      e.emitRR(op, r14, r15);
      e.emitRR(op, r13, r12);
      e.emitRR(op, r12, r13);
      e.emitRR(op, rax, rax);
      e.emitRR(op, rax, r8);
      e.emitRR(op, r8, rax);
      e.emitRR(op, r8, r8);
    }

    if (supported_AM[i] & MASK_I) {
      printf("  Address mode: I\n");
      e.emitI(op, -128);
      e.emitI(op, 127);
      e.emitI(op, 0xF1);
      e.emitI(op, 1);
    }

    if (supported_AM[i] & MASK_IR) {
      printf("  Address mode: IR\n");
      e.emitIR(op, rbx, 1);
      e.emitIR(op, rax, -128);
      e.emitIR(op, rsi, -128);
      e.emitIR(op, rbp, 127);
      e.emitIR(op, rsp, 0xF1);
      e.emitIR(op, rsp, 1);
      e.emitIR(op, r11, 1);
      e.emitIR(op, r8, -128);
      e.emitIR(op, r14, -128);
      e.emitIR(op, r13, 127);
      e.emitIR(op, r12, 0xF1);
      e.emitIR(op, r12, 1);
      if (i == 13 /*instr_mov*/) {
        e.emitIR(op, rax, (ssize_t)0x1234123412341234);
        e.emitIR(op, r8, (ssize_t)0x1234123412341234);
      }
    }

    if (supported_AM[i] & MASK_IRR) {
      printf("  Address mode: IRR\n");
      e.emitIRR(op, rsi, rax, -128);
      e.emitIRR(op, rax, rdi, -128);
      e.emitIRR(op, rbp, rsp, 127);
      e.emitIRR(op, rsp, rbp, 0xF1);
      e.emitIRR(op, rsp, rbp, 1);
      e.emitIRR(op, r14, rax, -128);
      e.emitIRR(op, r8, rdi, -128);
      e.emitIRR(op, r13, rsp, 127);
      e.emitIRR(op, r12, rbp, 0xF1);
      e.emitIRR(op, r12, rbp, 1);
      e.emitIRR(op, rsi, r8, -128);
      e.emitIRR(op, rax, r15, -128);
      e.emitIRR(op, rbp, r12, 127);
//.........这里部分代码省略.........
开发者ID:7755373049,项目名称:hiphop-php,代码行数:101,代码来源:asm-x64-test.cpp


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