方舟编译器源码分析(十)

本文聚焦于Maple编译器的src/mapleall/maple_driver/src/driver_option_common.cpp,详细分析了其中的namespace maple内的关键方法,这些方法在其他namespace中被调用。同时,文章揭示了const数组kUsages[]的细节,该数组存储了包括index、type等配置信息,对于理解编译器的选项处理至关重要。
摘要由CSDN通过智能技术生成

2021SC@SDUSC

今天分析的是src/mapleall/maple_driver/src/driver_option_common.cpp的代码。

首先在namespace为maple里写了两个方法:

DriverOptionCommon &DriverOptionCommon::GetInstance() {
  static DriverOptionCommon instance;
  return instance;
}

DriverOptionCommon::DriverOptionCommon() {
  CreateUsages(kUsages);
}

这两个方法在另一个namespace中会被用到。

在另一个namespace中定义了一个const的数组kUsages[]:

const mapleOption::Descriptor kUsages[] = {
  // index, type, shortOption, longOption, enableBuildType, checkPolicy, help, exeName, extra bins
  { kUnknown,
    0,
    "",
    "",
    kBuildTypeAll,
    kArgCheckPolicyNone,
    "USAGE: maple [options]\n\n"
    "  Example 1: <Maple bin path>/maple --run=me:mpl2mpl:mplcg --option=\"[MEOPT]:[MPL2MPLOPT]:[MPLCGOPT]\"\n"
    "                                    --mplt=MPLTPATH inputFile.mpl\n"
    "  Example 2: <Maple bin path>/maple -O2 --mplt=mpltPath inputFile.dex\n\n"
    "==============================\n"
    "  Options:\n",
    "all",
    {} },
  { kHelp,
    0,
    "h",
    "help",
    kBuildTypeProduct,
    kArgCheckPolicyOptional,
    "  -h --help [COMPILERNAME]    \tPrint usage and exit.\n"
    "                              \tTo print the help info of specified compiler,\n"
    "                              \tyou can use jbc2mpl, me, mpl2mpl, mplcg... as the COMPILERNAME\n"
    "                              \teg: --help=mpl2mpl\n",
    "all",
    {} },
  { kVersion,
    0,
    "",
    "version",
    kBuildTypeProduct,
    kArgCheckPolicyOptional,
    "  --version [command]         \tPrint version and exit.\n",
    "all",
    {} },
  { kInFile,
    0,
    "",
    "infile",
    kBuildTypeProduct,
    kArgCheckPolicyRequired,
    "  --infile file1,file2,file3  \tInput files.\n",
    "all",
    {} },
  { kInMplt,
    0,
    "",
    "mplt",
    kBuildTypeProduct,
    kArgCheckPolicyRequired,
    "  --mplt=file1,file2,file3    \tImport mplt files.\n",
    "all",
    { "jbc2mpl",
      "dex2mpl"
    } },
  { kOptimization0,
    0,
    "O0",
    "",
    kBuildTypeProduct,
    kArgCheckPolicyNone,
    "  -O0                         \tNo optimization.\n",
    "all",
    {} },
  { kOptimization1,
    0,
    "O1",
    "",
    kBuildTypeExperimental,
    kArgCheckPolicyNone,
    "  -O1            
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值