編譯器和處理器重新排序
『壹』 並行處理技術的策略及定義
在並行處理技術中所使用的演算法主要遵循三種策略:
1.分而治之法:也就是把多個任務分解到多個處理器或多個計算機中,然後再按照一定的拓撲結構來進行求解。
2.重新排序法:分別採用靜態或動態的指令詞度方式。
3.顯式/隱式並行性結合:顯式指的是並行語言通過編譯形成並行程序,隱式指的是串列語言通過編譯形成並行程序,顯式/隱式並行性結合的關鍵就在於並行編譯,而並行編譯涉及到語句、程序段、進程以及各級程序的並行性。 利用計算機語言進行並行性描述的時候主要有三種方案:
1.語言擴展方案:也就是利用各種語言的庫函數來進行並行性功能的擴展。
2.編譯制導法:也稱為智能編譯,它是隱式並行策略的體現,主要是由並行編譯系統進行程序表示、控制流的分析、相關分析、優化分析和並行化劃分,由相關分析得到方法庫管理方案,由優化分析得到知識庫管理方案,由並行化劃分得到程序重構,從而形成並行程序。
3.新的語言結構法:這是顯式並行策略的體現。也就是建立一種全新的並行語言的體系,而這種並行語言通過編譯就能直接形成並行程序。
『貳』 程序語言,操作系統,編譯器三者之間有何關系
程序語言,操作系統,編譯器三者之間有何關系?
可以理解為程序語言需要在編譯器裡面進行編譯,但是編輯器需要運行在操作系統里
編程語言(programming language),是用來定義計算機程序的形式語言。它是一種被標准化的交流技巧,用來向計算機發出指令。一種計算機語言讓程序員能夠准確地定義計算機所需要使用的數據,並精確地定義在不同情況下所應當採取的
簡單講,編譯器就是將"一種語言(通常為高級語言)"翻譯為"另一種語言(通常為低級語言)"的程序。一個現代編譯器的主要工作流程:源代碼 (source code) → 預處理器 (preprocessor) → 編譯器 (piler) → 目標代碼 (object code) → 鏈接器 (Linker) → 可執行程序 (executables)
操作系統是管理計算機硬體資源,控制其他程序運行並為用戶提供交互操作界面的系統軟體的集合。操作系統是計算機系統的關鍵組成部分,負責管理與配置內存、決定系統資源供需的優先次序、控制輸入與輸出設備、操作網路與管理文件系統等基本任務。操作系統的種類很多,各種設備安裝的操作系統可從簡單到復雜,可從手機的嵌入式操作系統到超級計算機的大型操作系統。目前流行的現代操作系統主要有Android、BSD、iOS、linux、Mac OS X、Windows、Windows Phone和z/OS等,除了Windows和z/OS等少數操作系統,大部分操作系統都為類Unix操作系統。
操作系統和編譯器的關系?
操作系統是和硬體的橋梁,所有軟體如果要運行,就得在裝有操作系統的機器上運行。沒有安裝操作系統的計算機,是不能運行其它軟體的,裝上了linux,你才能在它上面安裝g, 你可以用g編譯各種軟體,比如linux版的QQ等,同樣你也可以用g編譯linux系統軟體(因為系統軟體也是軟體),並把編譯好的linux軟體放到機器上安裝。
當然也可以寫個編譯器在沒有操作系統的機器上編譯,但這個編譯器就要做很多和硬體打交道的事。至少g是不行的,要運行在操作系統上的。
操作系統有哪幾大特徵?它們之間有何關系?
說得通俗點 就是一個操作平台 你要是用什麼軟體或執行什麼程序 都需要建立在一個支持的平台上才好發揮出作用
之間 不知你所指是什麼
家庭版 專業版 旗艦版 一個比一個功能更全面
關於編譯器 操作系統 CPU
是編譯器定的... 基本數據類型(VC為例)主類型分類型修飾符佔用空間表示範圍整形整數形 intshort2位元組-32768 ~ 32767long(默認)4位元組-231 ~ (231 -1)unsigned short2位元組0 ~ 65535
操作系統可以編譯高級語言源程序嗎
首先你要搞清楚操作系統與編譯器的概念,操作系統是一個軟體平台,本身沒有編譯功能。編譯器是運行於操作系統上的一個應用程序,只要有人把某種編程語言的編譯器移植到這個操作系統上,那麼就可以在這個操作系統上編譯這種語言。
另外,不知道你說的高級語言是哪些,C++和JAVA之類的算不算?
一般來說,電腦用的操作系統上面,比如windows 和 Linux 都有多編譯器,而小型的嵌入式操作系統則少有編譯器可以能運行其上。
用戶、計算機和程序員三者之間有何關系
用戶是使用計算機的,計算機為用戶提供服務,而程序員與計算機就像"朋友",可以彼此交流。實現人機對話。一一一個人解答,望採納。
語言編譯器是一種( ) A 系統軟體 B 微機操作系統 C 字處理系統 D 源程序
可以先明晰下規則 答案來自hhqq005
編譯器:翻譯工具,把高級語言源程序翻譯為匯編語言源程序,再把匯編源序翻譯成目標代碼供連接程序使用。
語言:一個規則。例如:C語言,它規定程序入口為main(),和其它規定。並把這些 <規定的集合> 命名為C語言。
TC:一個開發工具,它包括文本編輯器,編譯器,連接程序,調試環境等等。TC中的編譯器是TCC.EXE文件。
關於匯編:
匯編語言是一個規則,
匯編程序是一個翻譯工具
匯編源程序是一個 符合(匯編語言)規則的程序代碼
匯編是一個過程,這個過程是匯編程序 把匯編源程序 翻譯 為目標代碼的過程
對於高級語言:翻譯的過程叫做編譯,翻譯工具叫做編譯程序或編譯器。
我覺得 這樣看的話 是選擇A
操作系統和語言程序的關系
操作系統是系統軟體,不是編程語言。軟體是由編程語言編寫。常用的語言如匯編,C,C++,VC,VB,JAVA,DELPHI等。大部分應用程序都應在一定的系統平台(Windows,Unix,LInux)下工作。並不是說一定要有操作系統。否則在60-70年代計算機還有什麼用。但是有了操作系統對於人們應用計算機帶來了很多便利。至於說編程語言否也需要系統支持。還是那句話,在沒有系統前,人們就是用匯編和C語言編寫了windows系統!
當然一定的語言要有一定的編譯環境,所謂編譯環境就是一定的軟體集成環境,如要有編輯程序,連接程序,編譯程序,解釋程序等!而這些程序又需要系統的支持,所以編程語言需要系統支持,只不過並非是windows系統。在這里就我個人認為,只有匯編語言例外。
工作、家庭和親人三者之間有何關系?
家庭是一群由血緣和婚姻紐帶連接起來的人。這些人生活在一個屋頂下,共同開支預算。當然這僅僅意味著理論上的概念,在現實生活中,家庭生活是與周圍活躍的社會生活互相聯系的,它要受當時經濟、政治、文化及人們心理,信仰等變化的影響。無論在世人看來是多麼獨立的家庭,它實際上多多少少要反映出全部重要的社會現象,而反過來,所謂的「大世界」(即社會生活也必然要賦予家庭中人際關系所具有的特徵,例如夫妻,父子關系等等)。
在社會主義所有制的影響下,隨著國家對公民家庭物質福利的改善,家庭作為以父親為首的經濟生產個體的職能已經消亡,現在蘇聯人的家庭關系首先指的是人的關系,而不是指經濟關系。蘇聯人普遍認為,夫妻子女間的情愛和共同利益是他們最關心的方面。
當然,迄今為止,經濟在家庭生活中仍然還起著很大作用,它突出表現在家庭的物質利益和家庭成員的自助活動中。社會主義制度確保人與人之間的平等,因此其生活方式的一個重要特點就是夫妻共同管理家庭,共同分擔家務勞動。隨著時代的變遷,我們對於家庭與社會之間的責任和義務都有重新分配的必要。由於科技事業的發展,在很大程度上解決了蘇聯人民的衣、食、住、行狀況,他們無需再花費更多的精力從事一些瑣細的家務勞動,從而把大部份精力和時間投入從事社會性的創造活動。一般說來,家庭的建立和和睦幸福的確需要一定程度的物質條件,可這遠遠不是決定家庭幸福的唯一絕對因素。為了人們家庭安穩和諧,有必要首先清醒地認識幸福所包含的意義。為此,蘇聯社會學家V·波耶柯進行了測試,他把調查結果分為三類:
1.物質因素:一套公寓和物質福利優厚。
2.人的因素:夫妻間的相互理解,如對孩子的看法,有信心建立牢固的婚姻,共同的興趣等。
3.其它因素:令人滿意的工作,文化程度,好職位,社交范圍等。
被調查的3220個列寧格勒市民中,有一半的人認為家庭幸福首先取決於夫妻間的理解,然後才談得上其它因素。這次調查結果與蘇聯社會學家Z·楊柯夫1978——1979年與蘇聯《勞動婦女》雜志編輯部所做的調查一樣,不論男女公民,在確定自己的家庭關系時都首先考慮相互的理解和體貼,雙方互相尊重,第二是要能共同承擔養育子女的義務,但是,由於男女生理,心理特徵的差異,使女性比男性更為強調理解和信任的重要性,至於家庭之外的其它因素,男女均認為有一個滿意的工作是必要的前題,女性側重雙方共度餘暇,積極參加旅遊,社交是鞏固婚姻紐帶有效的辦法;男性更為珍視自我意識,行動自由和在社會上的個人名望及地位。
摘自網路
這樣,由於男女願望的差異和家務勞動,家庭生活所形成的獨特性,就使得家庭成員之間必須了解自己在家庭生活中應該扮演的角色,及所需承擔的義務。而家庭成員怎樣成功地處理好家務瑣事,家庭關系又反映出其所處社會的成熟和完善程度。社會學家認為:一個完美幸福的家庭,既要滿足其成員間婚姻和伴侶的本能的原始要求,又要使他們在自己子女身上體現出父愛或母愛,而與此同時通過大量日常共同的家務瑣事漸漸獲得正確處理夫妻關系的經驗,從而去理解家庭幸福和愛情的更深的層次。
一對和睦相愛的夫婦所關心的不僅僅是自己,而是對方的需要,這樣又提高了自己在愛人眼裡的價值,取得了他或她的尊敬。跟潘約諾夫夫婦一樣,成千上萬和睦的男女由於共同的生活目標,共同的企望密切地聯系起來,使他們能和衷共濟,屢經磨礪而不動搖婚姻家庭的基石。社會主義制度下這樣珍惜愛情,互相關心,愛撫下一代的夫妻關系正是現代蘇聯人生活的楷模。
『叄』 編譯軟體屬於________。
系統軟體
編譯器就是將「一種語言(通常為高級語言)」翻譯為「另一種語言(通常為低級語言)」的程序。一個現代編譯器的主要工作流程:源代碼 (source code) →預處理器(preprocessor) → 編譯器 (compiler) →目標代碼(object code) →鏈接器(Linker) → 可執行程序(executables)
(3)編譯器和處理器重新排序擴展閱讀:
典型的編譯器輸出是由包含入口點的名字和地址, 以及外部調用(到不在這個目標文件中的函數調用)的機器代碼所組成的目標文件。一組目標文件,不必是同一編譯器產生,但使用的編譯器必需採用同樣的輸出格式,可以鏈接在一起並生成可以由用戶直接執行的EXE,所以我們電腦上的文件都是經過編譯後的文件。
『肆』 什麼是編輯器
編譯器
編譯器是一種特殊的程序,它可以把以特定編程語言寫成的程序變為機器可以運行的機器碼。我們把一個程序寫好,這時我們利用的環境是文本編輯器。這時我程序把程序稱為源程序。在此以後程序員可以運行相應的編譯器,通過指定需要編譯的文件的名稱就可以把相應的源文件(通過一個復雜的過程)轉化為機器碼了。
[編輯]編譯器工作方法
首先編譯器進行語法分析,也就是要把那些字元串分離出來。然後進行語義分析,就是把各個由語法分析分析出的語法單元的意義搞清楚。最後生成的是目標文件,我們也稱為obj文件。再經過鏈接器的鏈接就可以生成最後的可執行代碼了。有些時候我們需要把多個文件產生的目標文件進行鏈接,產生最後的代碼。我們把一過程稱為交叉鏈接。
一個現代編譯器的主要工作流程如下:
* 源程序(source code)→預處理器(preprocessor)→編譯器(compiler)→匯編程序(assembler)→目標程序(object code)→連接器(鏈接器,Linker)→可執行程序(executables)
工作原理
編譯是從源代碼(通常為高級語言)到能直接被計算機或虛擬機執行的目標代碼(通常為低級語言或機器言)。然而,也存在從低級語言到高級語言的編譯器,這類編譯器中用來從由高級語言生成的低級語言代碼重新生成高級語言代碼的又被叫做反編譯器。也有從一種高級語言生成另一種高級語言的編譯器,或者生成一種需要進一步處理的的中間代碼的編譯器(又叫級聯)。
典型的編譯器輸出是由包含入口點的名字和地址以及外部調用(到不在這個目標文件中的函數調用)的機器代碼所組成的目標文件。一組目標文件,不必是同一編譯器產生,但使用的編譯器必需採用同樣的輸出格式,可以鏈接在一起並生成可以由用戶直接執行的可執行程序。
編譯器種類
編譯器可以生成用來在與編譯器本身所在的計算機和操作系統(平台)相同的環境下運行的目標代碼,這種編譯器又叫做「本地」編譯器。另外,編譯器也可以生成用來在其它平台上運行的目標代碼,這種編譯器又叫做交叉編譯器。交叉編譯器在生成新的硬體平台時非常有用。「源碼到源碼編譯器」是指用一種高級語言作為輸入,輸出也是高級語言的編譯器。例如: 自動並行化編譯器經常採用一種高級語言作為輸入,轉換其中的代碼,並用並行代碼注釋對它進行注釋(如OpenMP)或者用語言構造進行注釋(如FORTRAN的DOALL指令)。
預處理器(preprocessor)
作用是通過代入預定義等程序段將源程序補充完整。
編譯器前端(frontend)
前端主要負責解析(parse)輸入的源程序,由詞法分析器和語法分析器協同工作。詞法分析器負責把源程序中的『單詞』(Token)找出來,語法分析器把這些分散的單詞按預先定義好的語法組裝成有意義的表達式,語句 ,函數等等。 例如「a = b + c;」前端詞法分析器看到的是「a, =, b , +, c;」,語法分析器按定義的語法,先把他們組裝成表達式「b + c」,再組裝成「a = b + c」的語句。 前端還負責語義(semantic checking)的檢查,例如檢測參與運算的變數是否是同一類型的,簡單的錯誤處理。最終的結果常常是一個抽象的語法樹(abstract syntax tree,或 AST),這樣後端可以在此基礎上進一步優化,處理。
編譯器後端(backend)
編譯器後端主要負責分析,優化中間代碼(Intermediate representation)以及生成機器代碼(Code Generation)。
一般說來所有的編譯器分析,優化,變型都可以分成兩大類: 函數內(intraproceral)還是函數之間(interproceral)進行。很明顯,函數間的分析,優化更准確,但需要更長的時間來完成。
編譯器分析(compiler analysis)的對象是前端生成並傳遞過來的中間代碼,現代的優化型編譯器(optimizing compiler)常常用好幾種層次的中間代碼來表示程序,高層的中間代碼(high level IR)接近輸入的源程序的格式,與輸入語言相關(language dependent),包含更多的全局性的信息,和源程序的結構;中層的中間代碼(middle level IR)與輸入語言無關,低層的中間代碼(Low level IR)與機器語言類似。 不同的分析,優化發生在最適合的那一層中間代碼上。
常見的編譯分析有函數調用樹(call tree),控制流程圖(Control flow graph),以及在此基礎上的變數定義-使用,使用-定義鏈(define-use/use-define or u-d/d-u chain),變數別名分析(alias analysis),指針分析(pointer analysis),數據依賴分析(data dependence analysis)等等。
上述的程序分析結果是編譯器優化(compiler optimization)和程序變形(compiler transformation)的前提條件。常見的優化和變新有:函數內嵌(inlining),無用代碼刪除(Dead code elimination),標准化循環結構(loop normalization),循環體展開(loop unrolling),循環體合並,分裂(loop fusion,loop fission),數組填充(array padding),等等。優化和變形的目的是減少代碼的長度,提高內存(memory),緩存(cache)的使用率,減少讀寫磁碟,訪問網路數據的頻率。更高級的優化甚至可以把序列化的代碼(serial code)變成並行運算,多線程的代碼(parallelized,multi-threaded code)。
機器代碼的生成是優化變型後的中間代碼轉換成機器指令的過程。現代編譯器主要採用生成匯編代碼(assembly code)的策略,而不直接生成二進制的目標代碼(binary object code)。即使在代碼生成階段,高級編譯器仍然要做很多分析,優化,變形的工作。例如如何分配寄存器(register allocatioin),如何選擇合適的機器指令(instruction selection),如何合並幾句代碼成一句等等。