当前位置: 首页 > news >正文

音乐网站后台管理模板网站优化软件推荐

音乐网站后台管理模板,网站优化软件推荐,网站技术方案怎么写,女人与马做受网站dyn_cast dyn_cast是LLVM中用于执行安全的向下转型#xff08;downcasting#xff09;的一个模板函数。在C中#xff0c;向下转型是将基类的指针或引用转换为派生类的指针或引用。这种转型在运行时进行#xff0c;如果转型失败#xff08;即#xff0c;如果基类的对象实…dyn_cast dyn_cast是LLVM中用于执行安全的向下转型downcasting的一个模板函数。在C中向下转型是将基类的指针或引用转换为派生类的指针或引用。这种转型在运行时进行如果转型失败即如果基类的对象实际上不是派生类的实例则dyn_cast会返回nullptr。 在LLVM中dyn_cast常常被用于处理中间表示Intermediate RepresentationIR的各种不同类型的指令。例如现在有一个Instruction类型的指针但我们想知道这个指令是否是一个特定的派生类比如CallInst函数调用指令或ReturnInst返回指令。我们可以使用dyn_cast来尝试将Instruction指针转型为这些更具体的类型。 llvm::Instruction *I ...; // 某种指令 if (auto *CI llvm::dyn_castllvm::CallInst(I)) {// 如果I实际上是一个CallInst那么现在CI指向它// 我们可以安全地使用CallInst的方法 } else {// 如果I不是一个CallInst那么CI为nullptr// 在这个分支中我们知道I不是一个函数调用指令 }这样dyn_cast提供了一种在运行时安全地执行向下转型的方式使得我们可以根据对象的实际类型来执行不同的操作。 dyn_castCallInst auto *c dyn_castCallInst(I)这段代码什么意思。 在这段代码中dyn_castCallInst(I)是一个动态类型转换操作它尝试将指针I从Instruction*类型转换为CallInst*类型。 CallInst是LLVM中的一个类代表了一个函数调用指令。如果I实际上是一个CallInst也就是说这个指令是一个函数调用那么dyn_cast将会成功并返回一个指向这个CallInst的指针。如果I不是一个CallInst那么dyn_cast将返回nullptr。 CallInst是这些指令类型中的一种它代表了一个函数调用指令。当在LLVM IR中看到一个CallInst这意味着在那个点上一个函数被调用。 例如我们现在有如下的一个代码 int add(int a, int b) {return a b; }int main() {int result add(3, 4);return 0; } 在LLVM IR中add(3, 4)这个函数调用会被表示为一个CallInst。这个CallInst会包含调用的函数在这个例子中是add以及传递给函数的参数在这个例子中是3和4。 这种类型转换在处理LLVM IR时非常常见因为IR中的指令可以有很多不同的类型例如函数调用、分支、返回等并且每种类型的指令都有其特定的方法和属性。通过使用dyn_cast我们可以安全地将指令转换为其实际类型并访问这些特定的方法和属性。 class llvm::DbgDeclareInst getVariable()返回此指令所描述的变量。返回的DIVariable对象包含源代码中变量的信息如其名称和声明它的行号。 getAddress()返回表示变量地址的LLVM值。这可能是指向内存中变量位置的指针。 getExpression()返回此指令的DIExpression。DIExpression表示对于没有简单对应机器寄存器的变量的复杂地址计算。 getDebugLoc()返回此指令的调试位置包括源文件、行号和原始变量声明的列号。 LLVM llvm bgDeclareInst Class Reference // 假设BB是一个llvm::BasicBlock for (llvm::Instruction I : *BB) {if (auto *DDI llvm::dyn_castllvm::DbgDeclareInst(I)) {llvm::DIVariable *Var DDI-getVariable();llvm::DIExpression *Expr DDI-getExpression();// 现在您可以访问源代码信息llvm::StringRef VarName Var-getName();unsigned LineNumber Var-getLine();llvm::StringRef FileName Var-getFile()-getFilename();llvm::StringRef Directory Var-getFile()-getDirectory();// 打印出信息llvm::errs() Variable VarName.str() is declared at Directory.str() / FileName.str() : LineNumber \n;} }
http://www.zqtcl.cn/news/575650/

相关文章:

  • php 网站管理系统做生鲜管理系统的网站
  • 昆山建设工程招聘信息网站业绩显示屏 东莞网站建设技术支持
  • 百度我的网站广东广州网站建设
  • 怎么提高网站流量沈阳有资质做网站的公司有哪些
  • 内蒙古住房与城乡建设厅网站网址微信可以上网
  • 如何网站seo中国化工第九建设公司网站
  • 无锡网站推广优化公司单位网站建设必要性
  • 网站建设丶金手指花总12网站建设是怎么挣钱
  • 网站开发都是用什么框架广西建设网人员查询网
  • 做购物网站怎么写开题报告中山如何建网站
  • 专门做游戏交易的网站新网站如何才做被百度收录
  • 网站模板打包自己做电视视频网站吗
  • seo网站关键词排名提升公司建设网站需要多少钱
  • 湖北网站设计流程旺旺食品有限公司网页设计
  • 无锡专业网站建设华企网站建设推广优化
  • 做网站公司流程cms203片
  • wordpress网站主机名如何优化培训体系
  • 安平网站建设团购网站建设目的
  • 长春网页网站制作做网站时搜索的代码是什么
  • 排名好的移动网站建设陕西恒业建设集团网站
  • 怎么用ps做简单网站个人商城网站建设
  • mvc做门户网站自适应网站制作费用
  • 建设工程协会网站查询系统成品网站源码在线观看
  • 宝塔做两个网站安卓版wordpress
  • 即墨网站建设招聘企业类网站有哪些
  • 汕头网站建设开发软件开发属于哪个专业
  • 企业网站建设规划书阿里云虚拟机怎么做多个网站
  • 营销平台网站建设做视频怎么做
  • 吉林房地产网站开发icp网站授权函
  • 深圳公司网站建设哪家好郑州短视频培训机构