void X86MasterAnalyzer::detectCallingConvention(core::Context &context, const core::ir::calling::CalleeId &calleeId) const { auto architecture = context.image()->architecture(); auto setConvention = [&](const char *name) { context.conventions()->setConvention(calleeId, architecture->getCallingConvention(QLatin1String(name))); }; switch (architecture->bitness()) { case 16: setConvention("cdecl16"); break; case 32: setConvention("cdecl32"); break; case 64: setConvention("amd64"); break; } }
void X86MasterAnalyzer::detectCallingConvention(core::Context &context, const core::ir::calling::CalleeId &calleeId) const { const auto &platform = context.image()->platform(); auto architecture = platform.architecture(); auto setConvention = [&](const char *name) { context.conventions()->setConvention(calleeId, architecture->getCallingConvention(QLatin1String(name))); }; switch (architecture->bitness()) { case 16: setConvention("cdecl16"); break; case 32: setConvention("cdecl32"); break; case 64: if (platform.operatingSystem() == core::image::Platform::Windows) { setConvention("microsoft64"); } else { setConvention("amd64"); } break; } }