编译器探索MCP服务

一个连接LLM与Compiler Explorer API的模型上下文协议服务器,支持跨编译器和语言的代码编译、编译器功能探索及优化分析。

  • by torshepherd
  • Python
  • 本地部署
  • 16 星标
  • 更新于
在 GitHub 查看 torshepherd/compiler-explorer-mcp

使用说明

编译器资源管理器MCP

模型上下文协议(MCP)服务器,将LLM连接到编译器资源管理器API,使它们能够编译代码、探索编译器功能,并分析不同编译器和语言的优化。

示例问题

以下是一些有趣的问题,你可以用这个MCP问你的法学硕士:

编译器功能探索

  • “支持GCC的最早版本是什么 #embed 指令?"
  • “演示不同版本的Clang如何处理C++20模块”
  • “Clang 12中有哪些优化标志是Clang 11中没有的?”
  • “你能演示MSVC和GCC如何以不同的方式处理C++20协程吗?”

优化分析

  • “两者在装配上有什么区别 -O2 和 -O3 对于GCC 13中的简单递归斐波那契函数?"
  • “对于基本的矩阵乘法,Clang的矢量化与GCC的矢量化相比如何?”
  • “演示不同的优化级别如何影响此递归函数中的尾调用优化”
  • “什么是影响 -ffast-math 关于这个浮点繁重的计算?"

语言功能支持

  • 最新版本的GCC、Clang和MSVC支持哪些C++20功能
  • “演示不同编译器如何实现std::optional的内存布局”
  • “比较GCC和Clang如何处理C++20的constexpr虚函数”
  • “演示英特尔和GCC编译器如何自动矢量化SIMD操作的差异”

组装深潜

  • “在不同CPU架构的x86程序集中实现人口计数的最有效方法是什么?”
  • “演示不同的编译器如何在-O3处优化简单的字符串反转函数”
  • “比较虚拟函数调用与普通函数调用的程序集输出”
  • “不同的编译器如何在程序集中实现std::variant的类型切换?”

跨语言比较

  • 比较C++、Rust和Go中相同算法的生成程序集
  • “就生成的代码而言,C++和Rust的异常处理机制有何不同?”
  • “与未经检查的C++数组访问相比,显示Rust的边界检查的开销”
  • “比较C++和D如何在生成的程序集方面实现RAII”

性能研究

  • “使用std::sort和手写的快速排序在程序集级别有什么区别?”
  • “显示不同字符串连接方法在生成指令方面的比较”
  • “比较汇编中std::map与std::unordered_map操作的效率”
  • “不同的智能指针实现如何影响内联和代码大小?”