尋址方式就是處理器根據(jù)指令中給出的地址信息來尋找物理地址的方式擎浴,是確定本條指令的數(shù)據(jù)地址以及下一條要執(zhí)行的指令地址的方法悍汛。
尋址方式的種類
操作數(shù)在指令中稱為立即尋址绍赛;
操作數(shù)在某寄存器中稱為寄存器尋址甫恩;
操作數(shù)在主存單元,而其地址在指令中稱為直接尋址榛斯;
操作數(shù)在主存單元,而其地址在寄存器中稱為寄存器間接尋址搂捧。
HTML超文本標(biāo)記語言驮俗,標(biāo)準通用標(biāo)記語言下的一個應(yīng)用。 “超文本”就是指頁面內(nèi)可以包含圖片允跑、鏈接王凑,甚至音樂、程序等非文字元素聋丝。
XML是可擴展標(biāo)記語言荤崇,標(biāo)準通用標(biāo)記語言的子集,是一種用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語言潮针。
SGML標(biāo)準通用標(biāo)記語言(以下簡稱“通用標(biāo)言”)术荤,是一種定義電子文檔結(jié)構(gòu)和描述其內(nèi)容的國際標(biāo)準語言;通用標(biāo)言為語法置標(biāo)提供了異常強大的工具每篷,同時具有極好的擴展性瓣戚,因此在數(shù)據(jù)分類和索引中非常有用;是所有電子文檔標(biāo)記語言的起源焦读,早在萬維網(wǎng)發(fā)明之前“通用標(biāo)言”就已存在子库。
VRML(Virtual Reality Modeling Language)即虛擬現(xiàn)實建模語言。是一種用于建立真實世界的場景模型或人們虛構(gòu)的三維世界的場景建模語言矗晃,也具有平臺無關(guān)性仑嗅。
源程序,是指未經(jīng)編譯的,按照一定的程序設(shè)計語言規(guī)范書寫的仓技,人類可讀的文本文件鸵贬。通常由高級語言編寫。
源程序可以是以書籍或者磁帶或者其他載體的形式出現(xiàn)脖捻,但最為常用的格式是文本文件阔逼,這種典型格式的目的是為了編譯出計算機可執(zhí)行的程序。
將人類可讀的程序代碼文本翻譯成為計算機可以執(zhí)行的二進制指令地沮,這種過程叫做編譯嗜浮,由各種編譯器來完成。
正規(guī)式中的基本運算符號有“丨”摩疑、“ ? ”危融、“*”,分別稱為“或”雷袋、“連接”和“閉包”专挪, 連接運算符“ ? ”可省略。
正規(guī)式“(1|01)”表示的串是“1”或者“01”片排,對其進行運算得到的串為空串寨腔, 或者“ 1 ”無限次地連接“ 1”或“01 ”,或者“01 ”無限次地連接“ 1”或“01 ”率寡,例如“ 1 ”迫卢、 “01”、“11”冶共、“101”乾蛤、“011”、“0101”捅僵、……家卖。“
(1丨01)*0”則表示這樣的0和1構(gòu)成的串: 以0結(jié)尾且0不能連續(xù)出現(xiàn)庙楚。
程序設(shè)計語言的基本成分有數(shù)據(jù)成分上荡、運算成分、控制成分和傳輸成分馒闷。
數(shù)據(jù)成分用于描述程序所涉及的數(shù)據(jù)酪捡;
運算成分用以描述程序中所包含的運算;
控制成分用以描述程序中所包含的控制纳账;
傳輸成分逛薇,用以表達程序中數(shù)據(jù)的傳輸。
控制成分指明語言允許表述的控制結(jié)構(gòu)疏虫,程序員使用控制成分來構(gòu)造處理數(shù)據(jù)時的控制邏輯永罚。
理論上已經(jīng)證明可計算問題的程序都可以用順序啤呼、選擇和循環(huán)這三種控制結(jié)構(gòu)來描述。? ? ? ? ? ?
在實現(xiàn)程序語言的編譯和解釋兩種方式中呢袱,編譯方式下會生成用戶源程序的目標(biāo)代碼官扣,而解釋方式下則不產(chǎn)生目標(biāo)代碼。目標(biāo)代碼經(jīng)鏈接后產(chǎn)生可執(zhí)行代碼产捞,可執(zhí)行代碼可獨立加載運行醇锚,與源程序和編譯程序都不再相關(guān)哼御。而在解釋方式下坯临,在解釋器的控制下執(zhí)行源程序或其中間代碼,因此相對而言恋昼,用戶程序執(zhí)行的速度更慢看靠。 中間代碼生成和優(yōu)化不是編譯過程中必需的階段。對用戶源程序依次進行了詞法分析液肌、語法分析和語義分析后挟炬,原則上就可以產(chǎn)生目標(biāo)代碼了,只是目標(biāo)代碼的質(zhì)量和效率可能不夠高嗦哆。 詞法分析時編譯或解釋用戶源程序過程中唯一與源程序打交道的階段谤祖,其主要功能是按順序分析出源程序的記號。
COBOL是面向事務(wù)處理的語言老速,XML即可擴展標(biāo)記語言粥喜,PROLOG是邏輯式語言, LISP是函數(shù)式語言橘券。Python可稱為通用的腳本語言额湘。
解釋程序也稱為解釋器,它可以直接解釋執(zhí)行源程序旁舰,或者將源程序翮譯成某種中間表示形式后再加以執(zhí)行锋华;而編譯程序(編譯器)則首先將源程序翻譯成目標(biāo)語言程序,然后在計算機上運行目標(biāo)程序箭窜。 解釋程序在詞法毯焕、語法和語義分析方面與編譯程序的工作原理基本相同。一般情況下磺樱,在解釋方式下運行程序時芥丧,解釋程序可能需要反復(fù)掃描源程序。例如坊罢,每一次引用變量都要進行類型檢査续担,甚至需要重新進行存儲分配,從而降低了程序的運行速度活孩。在空間上物遇,以解釋方式運行程序需要更多的內(nèi)存,因為系統(tǒng)不但需要為用戶程序分配運行空間,而且要為解釋程序及其支撐系統(tǒng)分配空間询兴。
編譯程序的功能是把某高級語言書寫的源程序翻譯成與之等價的目標(biāo)程序(匯編語言程序或機器語言程序)乃沙。編譯程序的工作過程可以分為詞法分析、語法分析诗舰、語義分析警儒、 中間代碼生成、代碼優(yōu)化眶根、目標(biāo)代碼生成蜀铲、狩號表管理和出錯處理,如下圖所示属百。
匯編語言是與機器語言對應(yīng)的程序設(shè)計語言记劝, 因此也是面向機器的語言。? ? 從適用范圍而言族扰,某些程序語言在較為廣泛的應(yīng)用領(lǐng)域被使用來編寫軟件厌丑, 因此成為通用程序設(shè)計語言, 常用的如 C/C++渔呵,Java等怒竿。? ? 關(guān)系數(shù)據(jù)庫查詢語言特指 SQL,用于存取數(shù)據(jù)以及查詢扩氢、 更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)耕驰。? ? 函數(shù)式編程是一種編程范式,它將計算機中的運算視為函數(shù)的計算类茂。 函數(shù)編程語言最重要的基礎(chǔ)是λ演算(lambda calculus)耍属,其可以接受函數(shù)當(dāng)作輸入(參數(shù)) 和輸出(返回值)。? ? ? ? ? ?
有些軟件采用“編寫—編譯—鏈接—運行”的過程來創(chuàng)建巩检。將源程序編譯后產(chǎn)生目標(biāo)程序厚骗,然后再與其他模塊進行鏈接來產(chǎn)生可執(zhí)行程序。
解釋程序(也稱為解釋器)可以直接解釋執(zhí)行源程序兢哭,或者將源程序翻譯成某種中間表示形式后再加以執(zhí)行领舰;而編譯程序(編譯器)則首先將源程序翻譯成目標(biāo)語言程序,然后在計算機上運行目標(biāo)程序迟螺。這兩種語一處理程序的根本區(qū)別是:在編譯方式下冲秽,機器上運行的是與源程序等價的目標(biāo)程序,源程序和編譯程序都不再參與目標(biāo)程序的執(zhí)行過程矩父;而在解釋方式下锉桑,解釋程序和源程序(或其某種等價表示荽參與到程序的運行過程中,運行程序的控制權(quán)在解釋程序窍株。一而言之民轴,解釋器翻譯源程序時不產(chǎn)生獨立的目標(biāo)程序攻柠,而編譯器則需將源程序翻譯成獨立的目標(biāo)程序。
SQL即結(jié)構(gòu)化查詢語言后裸,是一種特殊目的的編程語言瑰钮,用于存取及查詢、更新和管理關(guān)系數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)微驶。 Verilog HDL是一種硬件描述語言浪谴,以文本形式來描述數(shù)字系統(tǒng)硬件的結(jié)構(gòu)和行為的語言,用它可以表示邏輯電路圖因苹、邏輯表達式苟耻,還可以表示數(shù)字邏輯系統(tǒng)所完成的邏輯功能。 Java是一種通用的程序設(shè)計語言容燕。
題中所列的編程語言都是通用的高級程序設(shè)計語言梁呈,同時具竄各自的應(yīng)用特點婚度。C/C++適合于進行系統(tǒng)級程序開發(fā)蘸秘,設(shè)備驅(qū)動程序與硬件及其抽象層交互,屬于系統(tǒng)級程序語言蝗茁。 Java在企業(yè)級應(yīng)用軟件開發(fā)醋虏、安卓開發(fā)、大數(shù)據(jù)哮翘、云計算等方面都是主流的編程語言颈嚼。 Python適合進行網(wǎng)絡(luò)應(yīng)用開發(fā)。 Visual Basic的主要特點是可視化設(shè)計饭寺、事件驅(qū)動的編程機制等阻课,程序員不用寫多少代碼就可以完成一個簡單的程序,也可以開發(fā)相當(dāng)復(fù)雜的程序艰匙。
主要的程序語言如下: Fortran語言(第一個高級程序設(shè)計語言限煞,科學(xué)計算,執(zhí)行效率高) Pascal語言(結(jié)構(gòu)化程序設(shè)計語言员凝,表達能力強署驻,Delphi) C語言(通用、結(jié)構(gòu)化程序設(shè)計語言健霹,指針操作能力強旺上,高效) Lisp語言(函數(shù)式程序語言,符號處理糖埋,人工智能) C++語言(C語言基礎(chǔ)上增加了類機制宣吱,面向?qū)ο螅咝В?Java語言(面向?qū)ο笸穑虚g代碼征候,跨平臺钦听,通用的程序設(shè)計語言) Python(面向?qū)ο螅忉屝统绦蛟O(shè)計語言倍奢,通用的腳本語言) PHP(服務(wù)器端腳本語言朴上,制作動態(tài)網(wǎng)頁) Ruby(簡單快捷、面向?qū)ο笞渖贰⒛_本語言) Delphi(快速應(yīng)用程序開發(fā)工具痪宰,可視化編程環(huán)境) COBOL(數(shù)據(jù)處理領(lǐng)域最為廣泛的程序設(shè)計語言,高級編程語言) PROLOG(邏輯式語言畔裕,建造專家系統(tǒng)衣撬、自然語言理解、智能知識庫等)
JavaScript是一種屬于網(wǎng)絡(luò)的腳本語言扮饶,已經(jīng)被廣泛用于Web應(yīng)用開發(fā)具练,常用來為網(wǎng)頁添加各式各樣的動態(tài)功能,為用戶提供更流暢美觀的瀏覽效果甜无。通常JavaScript腳本是通過嵌入在HTML中來實現(xiàn)自身的功能的扛点。 JavaScript是一種解釋性腳本語言(代碼不進行預(yù)編譯)。主要用來向HTML(標(biāo)準通用標(biāo)記語言下的一個應(yīng)用)頁面添加交互行為岂丘。 可以直接嵌入HTML頁面陵究,但寫成單獨的js文件有利于結(jié)構(gòu)和行為的分離。具有跨平臺特性奥帘,在絕大多數(shù)瀏覽器的支持下铜邮,可以在多種平臺下運行(如Windows、Linux寨蹋、Mac松蒜、Android、iOS等)已旧。
PHP是一種服務(wù)器端的秸苗、嵌入HTML的腳本語言。PHP區(qū)別其他像客戶端JavaScript 的地方是其代碼在服務(wù)器端執(zhí)行评姨,PHP可以做任何其他CGI程序所能做的事难述,例如收集表格數(shù)據(jù),生成動態(tài)頁面內(nèi)容吐句,或者收發(fā)cookies等胁后,PHP支持大范圍的數(shù)據(jù)庫。 Lisp是一種函數(shù)式程序設(shè)計語言嗦枢,屬于動態(tài)程序語言攀芯。 SQL(Structured Query Language,結(jié)構(gòu)化査詢語言)最早是IBM的圣約瑟研究實驗室為其關(guān)系數(shù)據(jù)庫管理系統(tǒng)SYSTEM R開發(fā)的一種查詢語言文虏。SQL是高級的非過程化編程語言侣诺,允許用戶在高層數(shù)據(jù)結(jié)構(gòu)上工作殖演。該語言不要求用戶指定對數(shù)據(jù)的存放方法,也不需要用戶了解具體的數(shù)據(jù)存放方式年鸳,所以具有完全不同底層結(jié)構(gòu)的不同數(shù)據(jù)庫系統(tǒng)可以使用相同的SQL語言作為數(shù)據(jù)輸入與管理的接口趴久。它以記錄集合作為操縱對象,所有SQL語句接受集合作為輸入搔确,返回集合作為輸出彼棍。SQL語言包含4個部分:數(shù)據(jù)查詢語言(SELECT語句)、數(shù)據(jù)操縱語言(INSERT膳算、UPDATE座硕、DELETE語句)、數(shù)據(jù)定義語言(如CREATE涕蜂、DROP等語句)和數(shù)據(jù)控制語言(如COMMIT华匾、ROLLBACK等語句)。 XML (Extensible Markup Language)是一種類似于HTML的標(biāo)記語言机隙,用來描述數(shù)據(jù)蜘拉。
計算機硬件只能識別由0、1字符串組成的機器指令序列黍瞧,即機器指令程序诸尽,因此機器指令程序是最基本的計算機語言原杂。用機器語言編制程序效率低印颤、可讀性差,難以理解和維護穿肄。
匯編語言年局,用容易記憶的符號代替0、1序列來表示機器指令中的操作碼和操作數(shù)咸产,例如矢否,用ADD表示加法、SUB表示減法等脑溢。雖然使用匯編語言編寫程序的效率和程序的可讀性有所提高僵朗,但匯編語言是面向機器的語言,其書寫格式在很大程度上取決于特定計算機的機器指令屑彻。
匯編語言源程序由若干條語句組成验庙,可分為指令語句、偽指令語句和宏指令語句三類社牲。
指令語句又稱為機器指令語句粪薛,將其匯編后能產(chǎn)生相應(yīng)的機器代碼,這些代碼能被CPU直接識別并執(zhí)行相應(yīng)的操作搏恤。
偽指令語句指示匯編程序在匯編源程序時完成某些工作违寿,比如給變量分配存儲單元地址湃交,給某個符號賦一個值等,偽指令語句經(jīng)匯編后不產(chǎn)生機器代碼藤巢。
允許用戶將多次重復(fù)使用的程序段定義為宏搞莺,宏指令語句就是宏的引用。