當前位置:首頁 » 編程軟體 » 2005編譯法

2005編譯法

發布時間: 2022-04-15 23:56:45

Ⅰ 微指令的編譯方法有哪些

直接編碼(直接控制)方式、欄位直接編碼方式、欄位間接編碼方式、混合編碼、其他(常數欄位)。特點:直接編碼速度快,但控存容量極大;欄位直接編碼縮短了微指令的長度,但是增加了解碼電路。

微指令是指在機器的一個CPU周期中,一組實現一定操作功能的微命令的組合,描述微操作的語句。微命令是指控制部件通過控制線向執行部件發出各種控制命令。操作微指令是描述受控電路的操作語句 , 分支微指令是描述控制電路的分支語句。

一條機器指令的功能是若干條微指令組成的序列來實現的,即一條機器指令所完成的操作分成若干條微指令來完成,由微指令進行解釋和執行,這個微指令序列通常叫做微程序。

微指令的編譯方法是決定微指令格式的主要因素。考慮到速度,成本等原因,在設計計算機時採用不同的編譯法 。因此微指令的格式大體分成兩類:水平型微指令和垂直型微指令。

Ⅱ 怎樣把.cs文件編譯成DLL文件

開始--程序--Microsoft Visual Studio.NET 2005--Visual Studio.NET工具,點擊其中的「Visual Studio.NET2005命令提示」,就會進入Microsoft Visual Studio.NET 2005命令提示窗口,然後我們用dos命令(cd)進入要編譯成dll的cs文件所在的目錄,然後輸入命令:

csc /out: bin\index.dll /t:library index.cs

回車,就會在bin目錄下生成與cs文件同名的dll文件

但是如果這個cs文件引用了bin目錄下的另外一個dll文件如comman.dll,則應該這樣輸入命令:

csc /out: bin\index.dll /r: bin\comman.dll /t:library index.cs

Ⅲ 關於Visual C++2005編譯過程中出現的問題知道的高手告訴我下。

此問題的原因是由於VS 2005在生成可執行文件時使用了一種新的技術,該技術生成的可執行文件會伴隨生成一個清單文件(manifest file)(.manifest後綴文件)(其本質上是XML文檔,你可以用文本編輯器打開看看),並在鏈接完成後將該清單文件嵌入到exe文件中(默認情況下)。而在FAT32文件系統中,在處理清單文件階段,當增量鏈接時不能完成清單文件的更新(默認情況下),於是造成清單文件嵌入失敗,從而使該 exe文件運行時沒有相應的清單文件而運行失敗並提示如上錯誤。而在NTFS文件系統中則不會出現上面的問題。

比較好的解決方案有兩個:

1.在項目的「屬性|配置屬性|清單工具|常規」中的「使用FAT32解決辦法」選擇「是」(默認為「否」),重新生成項目即可解決問題。如下圖所示: (圖略)

2.不啟用增量鏈接。在項目的「屬性|配置屬性|鏈接器|常規」中的「啟用增量鏈接」選擇「否」。此方法阻斷了問題產生的源頭,其每次生成exe文件時都直接嵌入清單文件,而不是默認的根據時戳而決定是否更新清單文件。(http://hi..com/sunglows/blog/item/7f90ef08c9539785d0581b3a.html)

英文版的也是一樣的。。。。

Ⅳ 計算機編譯就是指編碼和解碼兩個過程嗎

在微指令的控制欄位中,每一位代表一個微命令,在設計微指令時,是否發出某個微命令,只要將控制欄位中相應位置成"1"或"0",這樣就可打開或關閉某個控制門,這就是直接控製法.
在6.3節中所講的就是這種方法.但在某些復雜的計算機中,微命令甚至可多達三四百個,這使微指令字長達到難以接受的地步,並要求機器有大容量控制存儲器,為了改進設計出現了以下各種編譯法.
6.4.1 微指令的編譯法(編碼解碼方法)(2)
2.欄位直接編譯法
在計算機中的各個控制門,在任一微周期內,不可能同時被打開,而且大部分是關閉的(相應的控制位為"0").所謂微周期,指的是一條微指令所需的執行時間.如果有若干個(一組)微命令,在每次選擇使用它們的微周期內,只有一個微命令起作用,那麼這若干個微命令是互斥的.
例如,向主存儲器發出的讀命令和寫命令是互斥的;又如在ALU部件中,送往ALU兩個輸入端的數據來源往往不是唯一的,而每個輸入端在任一微周期中只能輸入一個數據,因此控制該輸人門的微命令是互斥的.
選出互斥的微命令,並將這些微命令編成一組,成為微指令字的一個欄位,用二進制編碼來表示, 就是欄位直接編譯法.
6.4.1 微指令的編譯法(編碼解碼方法)(3)
例如,將7個互斥的微命令編成一組,用三位二進制碼分別表示每個微命令,那麼在微指令中,該欄位就從7位減成3位,縮短了微指令長度.而在微指令寄存器的輸出端,為該欄位增加一個解碼器,該解碼器的輸出即為原來的微命令.
6.4.1 微指令的編譯法(編碼解碼方法)(4)
欄位長度與所能表示的微命令數的關系如下:
欄位長度 微命令數
2位 2~3
3位 4~7
4位 8~15
一般每個欄位要留出一個代碼,表示本段不發出任何微命令,因此當欄位長度為3位時,最多隻能表示7個互斥的微命令,通常代碼000表示不發微命令.
6.4.1 微指令的編譯法(編碼解碼方法)(5)
3.欄位間接編譯法
欄位間接編譯法是在欄位直接編譯法的基礎上,進一步縮短微指令字長的一種編譯法.
如果在欄位直接編譯法中,還規定一個欄位的某些微命令,要兼由另一欄位中的某些微命令來解釋,稱為欄位間接編譯法.
本方法進一步減少了指令長度,但很可能會削弱微指令的並行控制能力,因此通常只作為直接編譯法的一種輔助手段.
6.4.1 微指令的編譯法(編碼解碼方法)(6)
欄位A(3位)的微命令還受欄位B控制,當欄位B發出b1微命令時,欄位A發出a1,1,a1,2,…,a1,7中的一個微命令;而當欄位B發出b2微命令時,欄位A發出a2,1,a2,2,…,a2,7中的一個微命令,僅當A為000時例外,此時什麼控制命令都不產生.
6.4.1 微指令的編譯法(編碼解碼方法)(7)
4.常數源欄位E
在微指令中,一般設有一個常數源欄位E就如指令中的直接操作數一樣.E欄位一般僅有幾位,用來給某些部件發送常數,故有時稱為發射欄位.
該常數有時作為操作數送入ALU運算;有時作為計算器初值,用來控制微程序的循環次數等.
6.4.2 微程序流的控制 (1)
當前正在執行的微指令,稱為現行微指令,現行微指令所在的控制存儲器單元的地址稱現行微地址,現行微指令執行完畢後,下一條要執行的微指令稱為後繼微指令,後繼微指令所在的控存單元地址稱為後繼微地址.
所謂微程序流的控制是指當前微指令執行完畢後,怎樣控制產生後繼微指令的微地址.
與程序設計相似,在微程序設計中除了順序執行微程序外還存在轉移功能和微循環程和微子程序等,這將影響下址的形成.
下面介紹幾種常見的產生後繼微指令地址的方法.
6.4.2 微程序流的控制 (2)
(1)以增量方式產生後繼微地址.
在順序執行微指令時,後繼微地址由現行微地址加上一個增量(通常為1)形成的;而在非順序執行時則要產生一個轉移微地址.
機器加電後執行的第一條微指令地址(微程序入口)來自專門的硬體電路,控制實現取令操作,然後由指令操作碼產生後繼微地址.接下去,若順序執行微指令,則將現行微地址主微程序計數器( PC中)+1產生後繼微地址;若遇到轉移類微指令,則由 PC與形成轉移微地址的邏輯電路組合成後繼微地址.
6.4.2 微程序流的控制 (3)
6.4.2 微程序流的控制 (4)
(2)增量與下址欄位結合產生後繼微地址
將微指令的下址欄位分成兩部分:轉移控制欄位BCF和轉移地址欄位BAF,當微程序實現轉移時,將BAF送 PC,否則順序執行下一條微指令( PC+1).
執行微程序條件轉移時,決定轉移與否的硬體條件有好幾種.例如,"運算結果為零","溢出","已完成指定的循環次數"等.
我們假設有八種轉移情況,定義了八個微命令(BCF取3位),在圖中設置計數器CT用來控制循環次數.如在執行乘(或除)法指令時,經常採用循環執行"加,移位"(或減,移位)的方法,指令開始執行時,在CT中置循環次數)每執行一次循環,計數器減1,當計數器為零時結束循環.又考慮到執行微子程序時,要保留返回微地址,因此圖中設置了一個返回寄存器RR.

Ⅳ 如何編譯chrome中的depot

1) 了解代碼組織結構。
Chrome source非常龐大,並且在其主目錄下還包含有工具和組件,任何一個工具和組件也附帶有其源代碼。首先得熟悉這些源代碼的組織結構,在http://src.chromium.org/svn/中包含如下子目錄:releases,曾經發布過的chrome源代碼的正式版本;trunk,當前最新的源代碼。由於releases中的代碼比較舊,這里就不做說明了,只說明trunk的結構。在trunk下面有3個重要的目錄,deps包含了chrome編譯和運行所需要的全部組件的代碼。src裡麵包含的則是chrome的主程序的代碼,tools包含的是下載和配置編譯所需要的第三方工具的壓縮包和源代碼,其中就有svn和python這2個比較重要的工具,後面再詳細介紹。暫時做這樣一個簡單的介紹,因為其組織結構比較負責,以後再作補充斧正。

2)如何下載和同步源代碼。
首先談談下載:
1,最簡單的方法是從chrome官網上直接下載源代碼壓縮包,地址是http://build.chromium.org/buildbot/archives/chromium_tarball.html。

2,或者採用svn從http://src.chromium.org/svn/trunk/src這個地方heckout,這要求你先在本地建一個源代碼的主目錄。

3,另外一個辦法則是採用google提供的一個部署工具depot_tools。雖然這幾種辦法都可下載完整的源代碼,但目前的情況是:chrome基於Visual Stdio 2005 進行編譯,如果順利完成編譯工作,自然少不了sln文件,較早的源代碼中包含有現成的sln和vcproject文件,但後來做了修改,這些文件被拋棄掉,Google自己開發了一種腳本工具叫做GYP,這個工具採用python編寫,GYP採用了自定義的一套規則,用於生成各種工程文件。而關鍵的python則包含於depot_tools中,因此不論採用什麼方法下載的代碼,都得下載depot_tools這個工具,以獲得必須的工程文件。
depot_tools位於 http://src.chromium.org/svn/trunk/tools 下面,包括一個目錄和一個zip格式的壓縮包。

3)關於編譯器
前面提到Chrome採用Visual Stdio 2005進行編譯,根據http://dev.chromium.org的說明,需進行如下操作正常編譯
a, 安裝Visual Studio 2005.
b, 安裝Visual Studio 2005 Service Packe 1.
c, 安裝Visual Studio Hotfix 947315.
d, 如果是vista系統,還需安裝Visual Studio 2005 Service Packe 1 Update for Windows Vista.
e, 安裝Windows 2008 SDK,如果是Visual Studio 2008則不需要這一步。
f, 配置Windows 2008 SDK,使2008 SDK成為首選開發庫,以獲得一些新功能和特性。辦法是在開始->程序->Microsoft Windows SDK v6.1 > Visual Studio Registration > Windows SDK Configuration Tool,選擇make current按鈕。也可以在VS裡面手動配置include和libary路徑,效果是一樣的。

二,如何配置工程文件
1,如果是採用depot_tools,那麼從代碼下載到生成sln文件會自動完成。其步驟是
(1)下載depot_tools到本地存儲,假設位於d:/depot_tools.
(2)將d:/depot_tools添加到系統環境變數中。
(3)創建一個源代碼根目錄,假設為 d:/chrome,目錄不得包含空格。
(4)在命令行下切換當前目錄到d:/chrome。
(5)執行命令 gclient config http://src.chromium.org/svn/trunk/src ,該命令會首先下載svn和python分別到d:/depot_tools/svn_bin和d:/depot_tools/python_bin。
(6)執行命令 gclient sync 這個命令會調用svn同步源代碼。這個過程會比較漫長。全部完成之後全部源代碼就保存在d:/chrome裡面。未編譯的代碼大約有4個G左右,過程將十分漫長。這樣獲得的源代碼已經包含所有的工程文件,可直接打開。

重點說明一下gclient,它實際上是一個批處理文件,它主要做了如下一些事情,首先設置環境變數,如代碼根目錄,工具根目錄等。其次調用win_tools.bat從伺服器下載svn和python。最後調用python.exe對Chrome.gyp進行解析生成所有工程文件。
另外需要說明的是,gclient sync的過程非常漫長,根據命令行的提示來看總共需要同步67個項目(不是工程),期間可能會因為一些原因導致錯誤而退出這個過程,需要繼續調用sync。比如網路出現故障svn會多次進入sleep狀態然後重試,如果多次失敗就會報錯退出,還有的情況是某些子目錄的屬性問題無法同步,可根據提示進行操作。還有個目前新出現的問題,下面2個目錄「src/webkit/data/layout_tests/LayoutTests」和「src/third_party/WebKit/LayoutTests」的源代碼是從src.webkit.org簽出來的,但是這個網站目前存在問題無法簽出代碼, 需要屏蔽掉這2個目錄,由於裡面是測試代碼,即使丟棄也不會影響整個工程的編譯,方法是打開trunk下面的.gclient文件,向裡面添加如下內容
"custom_deps" : {
"src/webkit/data/layout_tests/LayoutTests":None,
"src/third_party/WebKit/LayoutTests":None,
},

這樣svn就能完成代碼的同步了。最後gclient會調用depot_tools/python_bin/python.exe 對 src/build/gyp_
chromium進行處理,這樣就得到了所有的sln和vcproject文件。

2,如果是下載的代碼壓縮包或者checkout的代碼,代碼目錄裡面沒有sln文件,這個時候需要調用命令行進入源代碼根目錄,然後執行命令 gclient runhooks --force,命令執行後會直接對Chrome.gyp進行解析,生成sln文件。

在實際下載過程中,最開始的時候我用TortoiseSVN從http://src.chromium.org/svn/trunk/src checkout源代碼,但是得到的代碼只有幾百兆,執行gclient runhooks --force命令後也沒有找到sln文件,具體原因未知,不建議使用此方式。而直接下載代碼壓縮包的方式沒有嘗試過,不知道是否可行。因此最穩妥的方法還是使用depot_tools來部署和處理源代碼。

三 編譯工程
啟動Visual Studio 2005打開 src/chrome/browser/chrome.sln,或者打開src/build/all.sln,如果打開的是chrome.sln裡麵包含480個工程,而all.sln則包含507個工程,一些09年的編譯說明提到有300左右的工程,可見chrome的代碼變動比較大。對整個解決方案進行編譯,打開需要2個小時才能完成編譯,視硬體環境而定,內存越大越快,推薦4G以上內存,酷睿2核或者4核。編譯完成以後據說會佔用30G的空間。編譯後的文件位於 d:/chorme/chrome/debug 目錄或者 d:/chorme/chrome/release目錄下。

Ⅵ visual c++ 2005 里怎麼沒有編譯和運行按鈕

6.0 可以直接打開.cpp的文件來編譯並生成.exe 但是2005就必須執行項目才可以,直接打開.cpp的文件,編譯,執行按鈕是灰的,不能用,只能新建一個空項目,再將代碼拷進去,這樣就可以編譯了

Ⅶ debug和release兩種編譯方法的區別與聯系

Debug 為調試版本,Release 為發布版本,從開發者和用戶視角看,他們的區別如下:

一、從開發者視角,Debug和Release的區別,主要是編譯器的選項不同,Debug 包含調試信息,並且不作任何優化,便於程序員調試程序。Release 往往是進行了各種優化,使得程序在代碼大小和運行速度上都是最優的,以便用戶很好地使用。

Debug 版本 相關參數解釋:
參數 含義
/MDd /MLd 或 /MTd 使用 Debug runtime library(調試版本的運行時刻函數庫)
/Od 關閉優化開關
/D "_DEBUG" 相當於 #define _DEBUG,打開編譯調試代碼開關(主要針對assert函數)
/ZI
創建 Edit and continue(編輯繼續)資料庫,這樣在調試過程中如果修改了源代碼不需重新編譯
GZ 可以幫助捕獲內存錯誤

Release 版本 參數含義
/MD /ML 或 /MT 使用發布版本的運行時刻函數庫
/O1 或 /O2 優化開關,使程序最小或最快
/D "NDEBUG" 關閉條件編譯調試代碼開關(即不編譯assert函數)
/GF 合並重復的字元串,並將字元串常量放到只讀內存,防止被修改

二、使用者視角,我們下載軟體的時候,一般應該選擇Release版。Debug一般比測試版更粗,主要提供給高級測試者反饋修改意見。

Ⅷ 關於Visual C++2005怎麼編譯啊

首先,拋開編譯器不說。一個C++程序必須要這樣做:
1. 按照C++語法編寫程序。(即:源代碼)
2. 將源代碼通過編譯器的編譯。生成Exe(即:可執行文件)Visual C++ 2005就是一個編譯器。
其次,對於Visual C++ 2005 這個工具而言,它可以創建Win32控制台程序。也可以創建MFC程序,還可以創建其它程序。通過你的描述,需要創建Win32控制台程序。
關於Visual C++2005的使用,由於需要截圖所以不方便貼。你可以到QQ群:140038975找我。

Ⅸ VS2005 debug編譯和msbuild編譯 有什麼區別

用aspnet_compiler發布網站在asp.net 2.0模型中,vs2005已經完全脫離了編譯而成為了一個徹底的ide.算是一個不小的改動。其中更是取消了有關Web Application的概念,使得習慣了vs2003的人剛開始的時候會有一些摸不著頭腦。下面簡單說一下我在使用過程中自己總結的,算是一點經驗。

新建web工程並且位置是文件系統的時候,vs2005隻是幫你建好了一個sln文件,這個東西只是指引msbuild 如何進行編譯的,過程是:ide 調用 msbuild ,msbuild解析sln文件,msbuild調用aspnet_compiler.exe進行網站的編譯。所以aspnet_compiler.exe只是負責進行網站的編譯的。

預編譯的概念在 .netframework 1.1 裡面就存在了,vs2003中的預編譯指的是將頁面對應的cs/vb文件與resx文件編譯後統一集成到一個dll中放到bin目錄下,將aspx文件直接拷貝過去。這樣做會留下隱患,因為aspx文件就直接暴露在最後的發行包中,如果完全是codeb-behind模型還好,只能改改界面,如果採用了頁面上的來生成頁面,源代碼就暴露了。針對這些問題,vs2005採用了一種新的模式。
請參看ASP.NET 編譯工具 (Aspnet_compiler.exe) 這篇文章了解對各種文件的處理方式。

IDE發布:
vs2005中選擇 生成-〉發布網站,在對話框中的操作將映射到aspnet_compiler.exe的參數中,可更新的發布對應 -u,其他選項類似,請參考上面的文章了解。
注意:發布時將忽略web.config中的debug參數,統一生成無調試信息的文件。

手工編譯:
簡單說來,如果是無更新發布模式編譯,appcode下面的class編譯成dll放在bin下,頁面內容清空位置不變作佔位用,同時頁面被編譯成一個隨機名稱的dll,增加一個同名.compiled文件到bin目錄下,內容大概如下:

<?xml version="1.0" encoding="utf-8"?>
<preserve resultType="3" virtualPath="/Forum/AdminList.aspx" hash="6772609c3" filehash="49154463f1d6738c" flags="110000" assembly="App_Web_hmrycg3w" type="ASP.forum_adminlist_aspx">
<filedeps>
<filedep name="/Controls/footer.ascx" />
<filedep name="/Controls/header.ascx" />
<filedep name="/Forum/AdminList.aspx" />
<filedep name="/Forum/AdminList.aspx.cs" />
<filedep name="/Forum/menu.ascx" />
<filedep name="/Forum/menu.ascx.cs" />
</filedeps>
</preserve>
裡面只是列出了頁面上的customcontrol,這里已經完成了和masterfile的映射。這樣最大限度的保護了頁面的敏感信息,發布過的網站中只能看見一堆文件名了。可更新的發布模式與vs2003類似,頁面就直接拷貝過來不予編譯了。

講了一堆原理,下面說一下aspnet_compiler.exe的調用方法,這是我使用的例子

我的開發目錄是這樣的

Project/
library/
devroot/
pubroot/
proj.sln
使用的命令如下:

aspnet_compiler -v / -p .\devroot -f .\pubroot
分析:

-v / 指明了iis的虛擬目錄
-p .\devroot 表示代碼實際位置
.\pubroot 指明了要發布的位置
-f 表示強制改寫目標位置
你還可以用-u來進行傳統意義上的預編譯,-d來插入編譯符號。

總的來說,aspnet_compile結合msbuild,提供了一個很好的自動化編譯環境,值得研究研究:)

熱點內容
編程貓被盜 發布:2025-03-17 12:02:18 瀏覽:129
海關鎖密碼箱如何設置新密碼 發布:2025-03-17 11:53:50 瀏覽:558
農業卡號的密碼在哪裡改 發布:2025-03-17 11:48:57 瀏覽:964
楊瀾超級訪問 發布:2025-03-17 11:47:17 瀏覽:236
資料庫無損連接 發布:2025-03-17 11:47:16 瀏覽:11
memcachephp類 發布:2025-03-17 11:40:04 瀏覽:828
哈夫曼編碼演算法實現 發布:2025-03-17 11:23:31 瀏覽:385
錄音機可以存儲信息嗎 發布:2025-03-17 11:13:32 瀏覽:174
郵件伺服器php 發布:2025-03-17 11:09:42 瀏覽:479
心跳包源碼 發布:2025-03-17 11:03:29 瀏覽:799