MCPcopy Create free account
hub / github.com/FEX-Emu/FEX / CALLAbsoluteOp

Method CALLAbsoluteOp

FEXCore/Source/Interface/Core/OpcodeDispatcher.cpp:552–571  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

550}
551
552void OpDispatchBuilder::CALLAbsoluteOp(OpcodeArgs) {
553 BlockSetRIP = true;
554
555 const auto Size = OpSizeFromSrc(Op);
556 Ref JMPPCOffset = LoadSource(GPRClass, Op, Op->Src[0], Op->Flags);
557
558 // Push the return address.
559 auto ConstantPC = GetRelocatedPC(Op);
560 Push(Size, ConstantPC);
561
562 // Store the RIP
563 const uint64_t NextRIP = Op->PC + Op->InstSize;
564 ExitFunction(JMPPCOffset, BranchHint::Call, ConstantPC, [&]() {
565 auto CallReturnJumpTarget = JumpTargets.find(NextRIP);
566 if (CallReturnJumpTarget != JumpTargets.end() && CallReturnJumpTarget->second.IsEntryPoint) {
567 return CallReturnJumpTarget->second.BlockEntry;
568 }
569 return InvalidNode;
570 }());
571}
572
573std::optional<CondClassType> OpDispatchBuilder::DecodeNZCVCondition(uint8_t OP) {
574 switch (OP) {

Callers

nothing calls this directly

Calls 1

endMethod · 0.45

Tested by

no test coverage detected