Class: AsmJIT::BaseEmitter
- Inherits:
-
Object
- Object
- AsmJIT::BaseEmitter
- Defined in:
- ext/asmjit/asmjit.cc
Direct Known Subclasses
Instance Method Summary collapse
Instance Method Details
#_emit(*args) ⇒ Object
421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 |
# File 'ext/asmjit/asmjit.cc', line 421 VALUE base_emitter_emit(int argc, VALUE* argv, VALUE self) { BaseEmitter *emitter = get_emitter(self); if (argc < 1) return Qnil; if (argc > 7) return Qnil; VALUE insn_name = argv[0]; Check_Type(insn_name, T_STRING); InstId inst_id = InstAPI::stringToInstId(emitter->arch(), RSTRING_PTR(insn_name), RSTRING_LEN(insn_name)); Operand operands[6]; for (int i = 0; i < argc - 1; i++) { operands[i] = opnd_get(argv[i + 1]); } emitter->emitOpArray(inst_id, &operands[0], argc - 1); return self; } |
#bind(labelv) ⇒ Object
408 409 410 411 412 413 414 415 416 417 418 419 |
# File 'ext/asmjit/asmjit.cc', line 408 VALUE base_emitter_bind(VALUE self, VALUE labelv) { BaseEmitter *emitter = get_emitter(self); Label label = label_get(labelv); int err = emitter->bind(label); if (err) { rb_raise(rb_eAsmJITError, "error binding label"); } return labelv; } |
#new_label ⇒ Object
395 396 397 398 399 400 401 402 403 404 405 406 |
# File 'ext/asmjit/asmjit.cc', line 395 VALUE base_emitter_new_label(VALUE self) { BaseEmitter *emitter = get_emitter(self); Label label = emitter->newLabel(); OperandWrapper *opnd_wrapper = static_cast<OperandWrapper *>(xmalloc(sizeof(OperandWrapper))); opnd_wrapper->opnd = label; VALUE obj = TypedData_Wrap_Struct(cLabel, &operand_type, opnd_wrapper); rb_iv_set(obj, "@emitter", self); return obj; } |