91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么要學(xué)習(xí)編譯器課程

電子工程師 ? 來源:網(wǎng)絡(luò)整理 ? 2021-03-30 10:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

所有優(yōu)秀的計(jì)算機(jī)科學(xué)學(xué)院都提供了編譯器課程,但是相對(duì)比較少的學(xué)校把它作為本科課程的必修部分。這篇文章回答了這個(gè)問題:為什么需要學(xué)習(xí)這門課?即使你從沒打算過編寫編譯器。

我寫這篇文章的其中一個(gè)原因是,盡管我在讀本科時(shí)很喜歡編譯器課程,但是我?guī)缀蹩床坏剿膶?shí)際作用。大多數(shù)資料看起來要么簡單易懂,要么很深?yuàn)W(事實(shí)上,我找到的大部分編譯器資料都是很枯燥的。)無論怎樣,我用了幾年時(shí)間總結(jié)了為什么這類課程會(huì)如此有用的實(shí)際原因。原因如下。

分析器和解析器無處不在

嚴(yán)謹(jǐn)?shù)?a href="http://m.makelele.cn/v/tag/1730/" target="_blank">程序員不得不去了解分析器和解析器,因?yàn)槲覀儾粫?huì)總是只寫一些小程序。每次你寫一個(gè)可擴(kuò)展的程序或處理一種新類型的輸入文件,你都需要了解它們(分析器和解析器)。格林斯潘第十定律:

“任何C或Fortran程序復(fù)雜到一定程度之后,都會(huì)包含一個(gè)臨時(shí)的、只有一半功能的、不完全符合規(guī)格的、充滿bug的、運(yùn)行速度很慢的Common Lisp實(shí)現(xiàn)?!?/p>

我們花費(fèi)如此多的時(shí)間在這些事情上,我們可以使用一次性的小技巧來做這些事情的每一個(gè),或者我們利用60年的理論和實(shí)際知識(shí)去解決問題,并把它做對(duì)。重要的是:你應(yīng)該什么時(shí)候借用已存在的代碼或者使用已存在的工具?理論知識(shí)在什么時(shí)候可以提供幫助?哪些語言設(shè)計(jì)原則可以運(yùn)用在我們?nèi)粘J褂玫男≌Z言?

你能更好地編寫正確的代碼

編譯器應(yīng)該把輸入的語言正確地翻譯成合法的程序。為了達(dá)到這個(gè)目標(biāo),編譯器開發(fā)者必須了解整個(gè)輸入語言,包括一些普通程序員沒見過的罕見問題。這個(gè)理解過程是通往程序語言本質(zhì)的重要一步,它和我們平時(shí)寫代碼時(shí)所看到的不一樣。舉個(gè)例子,我在學(xué)習(xí)了順序點(diǎn)(sequence points),未定義行為(undefined behaviors),和常用的算術(shù)轉(zhuǎn)換的細(xì)節(jié)后,完全改變了我對(duì)C語言的理解。C編譯器編寫者已經(jīng)掌握這些概念了,但大多數(shù)初級(jí)和中級(jí)程序員都不知道這些概念。毫不夸張地說,一旦你知道語言的本質(zhì),你會(huì)以不同地方式和更準(zhǔn)確地思考這個(gè)語言。這適用于任何的語言,特別是像C和C++這些語義不清晰的語言。

你可以編寫更快的代碼

通過了解編譯器,你可以很清晰地知道哪些優(yōu)化是編譯器可以優(yōu)化的,和哪些是編譯器不能進(jìn)行優(yōu)化的,無論他們看起來是多么的合理和簡單。你將會(huì)學(xué)到哪類代碼通常會(huì)建造最佳代碼塊,為什么會(huì)這樣和這些代碼做了什么。你會(huì)知道為什么一些代碼可以擁有更好的性能,比如使用一半寄存器組緩存濾波系數(shù)一半寄存器組緩存樣本的FIR濾波器,它和使用普通優(yōu)化器實(shí)現(xiàn)的不一樣。你和你喜歡的編譯器是一個(gè)能創(chuàng)建快速代碼的團(tuán)隊(duì),你可以使用它高效地工作,或者使用提前優(yōu)化等無意義的技巧來修改它。

其次,編譯器后端是與目標(biāo)架構(gòu)密切關(guān)聯(lián)的,當(dāng)然,現(xiàn)代的架構(gòu)都盡量提供匯編程序員友好的平臺(tái),而且離著不遠(yuǎn)了。通過理解編譯器后端和它為什么是這樣產(chǎn)生代碼的,你會(huì)對(duì)計(jì)算機(jī)架構(gòu)的操作有更好的理解。

責(zé)任編輯:lq6

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)算機(jī)
    +關(guān)注

    關(guān)注

    19

    文章

    7807

    瀏覽量

    93204
  • 分析器
    +關(guān)注

    關(guān)注

    0

    文章

    93

    瀏覽量

    12917
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1672

    瀏覽量

    51618
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    性能突破 | SpacemiT-X60 在 LLVM 編譯器上實(shí)現(xiàn) 16% 顯著提升

    2025年10月,在北美RISC-V峰會(huì)上,Igalia編譯器工程師Mikhail發(fā)表專題演講《Unlocking15%MorePerformance
    的頭像 發(fā)表于 11-21 18:04 ?8892次閱讀
    性能突破 | SpacemiT-X60 在 LLVM <b class='flag-5'>編譯器</b>上實(shí)現(xiàn) 16% 顯著提升

    開源鴻蒙技術(shù)大會(huì)2025丨編譯器與編程語言分論壇:語言驅(qū)動(dòng)系統(tǒng)創(chuàng)新,編譯賦能生態(tài)繁榮

    在萬物智聯(lián)的時(shí)代背景下,操作系統(tǒng)底層能力的構(gòu)建離不開編程語言與編譯器的關(guān)鍵支撐。作為開源鴻蒙生態(tài)的核心技術(shù),語言設(shè)計(jì)與編譯器、虛擬機(jī)實(shí)現(xiàn)的進(jìn)步直接關(guān)系到開發(fā)效率、運(yùn)行性能與系統(tǒng)安全。本次分論壇聚焦
    的頭像 發(fā)表于 11-20 17:24 ?925次閱讀
    開源鴻蒙技術(shù)大會(huì)2025丨<b class='flag-5'>編譯器</b>與編程語言分論壇:語言驅(qū)動(dòng)系統(tǒng)創(chuàng)新,<b class='flag-5'>編譯</b>賦能生態(tài)繁榮

    飛凌嵌入式ElfBoard-Vim編輯之GCC編譯器的安裝

    GCC(GNU Compiler Collection)是由GNU開發(fā)的編程語言編譯器,最初是作為GNU操作系統(tǒng)的編譯器編寫的。GCC是一個(gè)編譯器套件,包含很多軟件包,支持多種語言編譯
    發(fā)表于 10-15 08:44

    GCC編譯器,怎么才能實(shí)現(xiàn)c文件中未被調(diào)用的函數(shù),不會(huì)被編譯呢?

    GCC編譯器,怎么才能實(shí)現(xiàn)c文件中未被調(diào)用的函數(shù),不會(huì)被編譯?有什么編譯選項(xiàng)可以設(shè)置嗎? 移植代碼,有些函數(shù)沒被調(diào)用的函數(shù)想留在代碼里,但不想被編譯,
    發(fā)表于 09-28 12:25

    如何在Keil中將NuMicro BSP從Arm編譯器5遷移到編譯器6?

    在Keil中將NuMicro BSP從Arm編譯器5遷移到編譯器6!
    發(fā)表于 08-20 06:29

    進(jìn)迭時(shí)空同構(gòu)融合RISC-V AI CPU的Triton算子編譯器實(shí)踐

    Triton是由OpenAI開發(fā)的一個(gè)開源編程語言和編譯器,旨在簡化高性能GPU內(nèi)核的編寫。它提供了類似Python的語法,并通過高級(jí)抽象降低了GPU編程的復(fù)雜性,同時(shí)保持了高性能。目前
    的頭像 發(fā)表于 07-15 09:04 ?1880次閱讀
    進(jìn)迭時(shí)空同構(gòu)融合RISC-V AI CPU的Triton算子<b class='flag-5'>編譯器</b>實(shí)踐

    邊緣設(shè)備AI部署:編譯器如何實(shí)現(xiàn)輕量化與高性能?

    電子發(fā)燒友網(wǎng)綜合報(bào)道 AI編譯器是專門為人工智能(AI)和機(jī)器學(xué)習(xí)(ML)模型設(shè)計(jì)的編譯器,其核心目標(biāo)是將高級(jí)的AI模型描述(如計(jì)算圖、神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu))轉(zhuǎn)換為特定硬件平臺(tái)(如CPU、GPU、FPGA
    的頭像 發(fā)表于 07-06 05:49 ?6647次閱讀

    編譯器功能安全驗(yàn)證的關(guān)鍵要素

    在汽車、工業(yè)、醫(yī)療等安全關(guān)鍵型應(yīng)用中,確保功能安全合規(guī)性需要嚴(yán)格的工具鏈驗(yàn)證。開發(fā)安全關(guān)鍵型軟件的企業(yè)必須遵守ISO 26262、IEC 61508、ISO 62304等國際標(biāo)準(zhǔn)對(duì)編譯器工具鏈進(jìn)行全面的驗(yàn)證。
    的頭像 發(fā)表于 07-05 13:37 ?1582次閱讀

    兆松科技發(fā)布高性能RISC-V編譯器ZCC 4.0.0版本

    近日,兆松科技(武漢)有限公司(以下簡稱“兆松科技”)宣布正式發(fā)布高性能 RISC-V 編譯器 ZCC 4.0.0 版本。新版本在性能優(yōu)化、廠商自定義指令支持和軟件庫等方面實(shí)現(xiàn)全面升級(jí),并同步推出
    的頭像 發(fā)表于 06-27 14:48 ?3047次閱讀
    兆松科技發(fā)布高性能RISC-V<b class='flag-5'>編譯器</b>ZCC 4.0.0版本

    兆松科技ZCC編譯器全面支持芯來科技NA系列處理

    近日,兆松科技(武漢)有限公司(以下簡稱“兆松科技”)宣布正式發(fā)布高性能RISC-V編譯器ZCC 4.0.0版本。
    的頭像 發(fā)表于 06-11 09:56 ?1708次閱讀

    RISC-V架構(gòu)下的編譯器自動(dòng)向量化

    進(jìn)迭時(shí)空專注于研發(fā)基于RISC-V的高性能新AICPU,對(duì)于充分發(fā)揮CPU核的性能而言,編譯器是不可或缺的一環(huán),而在AI時(shí)代,毫無疑問向量算力將發(fā)揮越來越重要的作用。進(jìn)迭時(shí)空非常重視RISC-V
    的頭像 發(fā)表于 06-06 16:59 ?1235次閱讀
    RISC-V架構(gòu)下的<b class='flag-5'>編譯器</b>自動(dòng)向量化

    RVCT編譯器是否比GNU的編譯器的代碼執(zhí)行速度更快?

    使用FX3S遇到了RVCT編譯器的問題。 1、在SDK的release note中有支持RVCT的描述, 但是在EZ USB Suite的設(shè)置中沒有找到RVCT的選項(xiàng), 請(qǐng)問支持的具體版本
    發(fā)表于 05-08 07:49

    HighTec編譯器全面支持芯馳科技車規(guī)MCU芯片E3650

    近日,HighTec與芯馳科技共同宣布HighTec編譯器套件將全面支持芯馳新一代旗艦智控MCU-E3650芯片。此次合作,進(jìn)一步豐富了芯馳車芯產(chǎn)品的工具鏈生態(tài),雙方將攜手為客戶提供高性能、高安全性的解決方案。
    的頭像 發(fā)表于 04-28 15:20 ?1798次閱讀

    HighTec編譯器全面適配紫光同芯THA6 Gen2系列產(chǎn)品

    近日,紫光同芯與全球領(lǐng)先的汽車級(jí)C/C++編譯器供應(yīng)商HighTec共同宣布,HighTec編譯器完成對(duì)紫光同芯THA6 Gen2系列產(chǎn)品的全面適配。此次合作實(shí)現(xiàn)了從指令集優(yōu)化到功能安全的全棧支持,是國產(chǎn)高端車規(guī)芯片與國際領(lǐng)先開發(fā)工具的深度技術(shù)融合,將為全球汽車電子開發(fā)者
    的頭像 發(fā)表于 04-02 09:42 ?1187次閱讀

    請(qǐng)問基于GCC編譯器的initcall在STM32如何實(shí)現(xiàn)?

    請(qǐng)問各位基于GCC編譯器的initcall在STM32如何實(shí)現(xiàn)?有哪位實(shí)現(xiàn)了嗎?
    發(fā)表于 03-13 06:24