የኤልኤልቪኤም 13.0 ማጠናከሪያ ስብስብ መለቀቅ

ከስድስት ወራት እድገት በኋላ የኤልኤልቪኤም 13.0 ፕሮጀክት መለቀቅ ቀርቧል - ከጂሲሲ ጋር ተኳሃኝ የሆነ የመሳሪያ ስብስብ (አቀናባሪዎች ፣ አመቻቾች እና ኮድ ማመንጫዎች) ፕሮግራሞችን ወደ መካከለኛ ቢትኮድ እንደ RISC መሰል ምናባዊ መመሪያዎች ያጠናቅራል (ዝቅተኛ ደረጃ ምናባዊ ማሽን ከ ባለብዙ ደረጃ ማመቻቸት ስርዓት). የመነጨው pseudocode በፕሮግራሙ አፈጻጸም ጊዜ በቀጥታ በጂአይቲ ማጠናከሪያ ወደ ማሽን መመሪያዎች ሊቀየር ይችላል።

በክላንግ 13.0 ውስጥ ማሻሻያዎች፡-

  • ለተረጋገጠ የጅራት ጥሪዎች የተተገበረ ድጋፍ (በተግባሩ መጨረሻ ላይ ንዑስ ክፍልን በመጥራት ፣ ንዑስ ክፍሉ እራሱን ከጠራ የጅራት ድግግሞሽ ይፈጥራል)። ዋስትና ለተሰጣቸው የጅራት ጥሪዎች የሚደረገው ድጋፍ በ "[[clang:: musttail]]" በC++ እና በ "__ Attribute__((musttail))" በ C በ"መመለስ" መግለጫ ውስጥ በአገልግሎት ላይ ይውላል። ባህሪው የቁልል ፍጆታን ለመቆጠብ ኮድን ወደ ጠፍጣፋ ድግግሞሽ በማሰማራት ማመቻቸትን እንዲተገብሩ ይፈቅድልዎታል።
  • የ"መጠቀም" መግለጫዎችን እና የስብስብ ቅጥያዎችን የ"[[]]" ቅርጸትን በመጠቀም የC++11-ቅጥ ባህሪያትን ለመግለጽ ድጋፍ ይሰጣሉ።
  • በተጠቃሚ ኮድ ውስጥ የተያዙ መለያዎችን ሲገልጹ ማስጠንቀቂያ ለማሳየት የ"-Wreserved-identifier" ባንዲራ ታክሏል።
  • "-Wunused-but-set-parameter" እና "-Wunused-but-set-variable" ባንዲራዎች ተጨምረዋል መለኪያ ወይም ተለዋዋጭ ከተዋቀረ ግን ጥቅም ላይ ካልዋለ።
  • የመቀነስ ተግባራት ባዶ ጠቋሚን በመጠቀም ኮዱ ያልተገለጸ ባህሪን ካስተዋወቀ ማስጠንቀቂያ ለመስጠት የ"-Wnull-pointer- subtraction" ባንዲራ ታክሏል።
  • ለእያንዳንዱ ኮድ ፋይል ለማመንጨት የ"-fstack-usage" ባንዲራ ታክሏል ተጨማሪ ".su" ፋይል በሂደት ላይ ባለው ፋይል ውስጥ ስለተገለጸው እያንዳንዱ ተግባር የቁልል ፍሬሞች መጠን መረጃ የያዘ።
  • አዲስ የውጤት አይነት ወደ static analyzer ተጨምሯል - “sarif-html”፣ ይህም በአንድ ጊዜ በኤችቲኤምኤል እና በሳሪፍ ቅርጸቶች ሪፖርቶችን ወደ ማመንጨት ይመራል። አዲስ የalloClassWithName ቼክ ታክሏል። የ "-analyzer-display-progress" አማራጩን ሲገልጹ የእያንዳንዱ ተግባር ትንተና ጊዜ ይታያል. የስማርት ጠቋሚ ተንታኝ (alpha.cplusplus.SmartPtr) ዝግጁ ነው።
  • ከOpenCL ድጋፍ ጋር የተቆራኙት ችሎታዎች ተዘርግተዋል። ለአዲስ ቅጥያዎች cl_khr_integer_dot_product፣ cl_khr_extended_bit_ops፣ __cl_clang_bitfields እና __cl_clang_non_ተንቀሳቃሽ_kernel_param_types ድጋፍ ታክሏል። የOpenCL 3.0 ዝርዝር ትግበራ ቀጥሏል። ለ C፣ ሌላ ስሪት በግልፅ ካልተመረጠ በስተቀር የOpenCL 1.2 ዝርዝር መግለጫ በነባሪነት ጥቅም ላይ ይውላል። ለC++፣ የ".clcpp" ቅጥያ ያላቸው ፋይሎች ድጋፍ ታክሏል።
  • በOpenMP 5.1 ዝርዝር ውስጥ የተገለጹት የ loop ትራንስፎርሜሽን መመሪያዎች (“#pragma omp unrol” እና “#pragma omp tile”) ድጋፍ ተተግብሯል።
  • ወደ Clang-ቅርጸት መገልገያ የታከሉ አማራጮች፡ SpacesInLineCommentPrefix ከአስተያየቶች በፊት የቦታዎችን ብዛት ለመወሰን፣ IndentAccessModifiers፣ LambdaBodyIndentation እና PPIndentWidth የግቤቶችን፣ የላምዳ መግለጫዎችን እና የቅድሚያ ፕሮሰሰር መመሪያዎችን አሰላለፍ ለመቆጣጠር። የራስጌ ፋይሎችን መቁጠርን የመደርደር ዕድሎች ተዘርግተዋል። የJSON ፋይሎችን ለመቅረጽ ድጋፍ ታክሏል።
  • ብዙ አዳዲስ ቼኮች ወደ ሊንተር ክላንግ-ቲዲ ተጨምረዋል።

በኤልኤልቪኤም 13.0 ውስጥ ቁልፍ ፈጠራዎች፡-

  • የመመለሻ ተኮር ፕሮግራሚንግ (ROP) ቴክኒኮችን በልዩ አያያዝ ደረጃ በመጠቀም የCET (የዊንዶውስ መቆጣጠሪያ ፍሰት ማስፈጸሚያ ቴክኖሎጂ) ቴክኖሎጂን ለመጠቀም የ"-ehcontguard" አማራጭ ታክሏል።
  • የዴቡጊንፎ-ሙከራ ፕሮጄክቱ የፕሮጀክት-ተሻጋሪ ፈተናዎች ተብሎ ተሰይሟል እና ከተለያዩ ፕሮጀክቶች የተውጣጡ ክፍሎችን ለመፈተሽ የተቀየሰ ነው፣ መረጃን በማረም ብቻ አልተገደበም።
  • የመሰብሰቢያ ስርዓቱ ብዙ ስርጭቶችን ለመገንባት ድጋፍ ይሰጣል, ለምሳሌ, አንዱ ከመገልገያዎች ጋር, እና ሌላኛው ለገንቢዎች ቤተ-መጻሕፍት.
  • በ AArch64 አርክቴክቸር ጀርባ ላይ ለArmv9-A RME (Realm Management Extension) እና SME (ስኬል ማትሪክስ ኤክስቴንሽን) ማራዘሚያዎች ድጋፍ በአሰባሳቢው ውስጥ ተተግብሯል።
  • ለ ISA V68/HVX ድጋፍ ለሄክሳጎን አርክቴክቸር ከኋላው ታክሏል።
  • የ x86 ጀርባ ለ AMD Zen 3 ፕሮሰሰሮች ድጋፍን አሻሽሏል።
  • ለ GFX1013 RDNA2 APU ድጋፍ ወደ AMDGPU የጀርባ ሽፋን ታክሏል።
  • Libc++ የC++20 እና C++2b ደረጃዎችን የ"ጽንሰ-ሀሳቦች" ቤተ-መጽሐፍት ማጠናቀቅን ጨምሮ አዳዲስ ባህሪያትን መተግበሩን ቀጥሏል። ለ std :: የፋይል ስርዓት ለ MinGW-ተኮር የዊንዶውስ መድረክ ድጋፍ ታክሏል። የራስጌ ፋይሎች ተለያይተዋል። , እና . ሙሉ በሙሉ ያልተተገበሩ ተግባራት የሌላቸውን የራስጌ ፋይሎችን ለማሰናከል LIBCXX_ENABLE_INCOMPLETE_FEATURES የግንባታ አማራጭ ታክሏል።
  • ለBig-endian Aarch64 ፕሮሰሰር ድጋፍ የተተገበረበት የኤልኤልዲ ማያያዣ አቅም ተዘርግቷል እና የ Mach-O backend መደበኛ ፕሮግራሞችን ማገናኘት ወደ ሚፈቅድበት ሁኔታ ቀርቧል። LLDን በመጠቀም Glibcን ለማገናኘት የሚያስፈልጉ ማሻሻያዎች ተካተዋል።
  • የllvm-mca (የማሽን ኮድ ተንታኝ) መገልገያ መመሪያዎችን በቅደም ተከተል (በቅደም ተከተል superscalar pipeline) ለሚፈጽሙ አቀነባባሪዎች ድጋፍ አክሏል፣ እንደ ARM Cortex-A55።
  • የ LLDB አራሚ ለ AArch64 መድረክ ለጠቋሚ ማረጋገጫ ፣ MTE (MemTag ፣ Memory Tagging Extension) እና SVE መመዝገቢያዎች ሙሉ ድጋፍ ይሰጣል። የታከሉ ትእዛዞች በእያንዳንዱ የማህደረ ትውስታ ድልድል ስራ ላይ መለያዎችን እንዲያሰሩ እና ማህደረ ትውስታን በሚደርሱበት ጊዜ የጠቋሚውን ቼክ እንዲያደራጁ የሚፈቅዱ ሲሆን ይህም ከትክክለኛው መለያ ጋር መያያዝ አለበት.
  • የኤልኤልዲቢ አራሚ እና የፎርትራን ቋንቋ ግንባር - ፍላንግ በፕሮጀክቱ በተፈጠሩት ሁለትዮሽ ስብሰባዎች ላይ ተጨምረዋል።

ምንጭ: opennet.ru

አስተያየት ያክሉ