本文整理汇总了C++中X64Assembler::emitR方法的典型用法代码示例。如果您正苦于以下问题:C++ X64Assembler::emitR方法的具体用法?C++ X64Assembler::emitR怎么用?C++ X64Assembler::emitR使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类X64Assembler
的用法示例。
在下文中一共展示了X64Assembler::emitR方法的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);
//.........这里部分代码省略.........