編譯器選擇乘法指令的規則
❶ 程序的指令是RISC還是CISC是由什麼決定編譯程序
risc(精簡指令集計算機)和cisc(復雜指令集計算機)是當前cpu的兩種架構。它們的區別在於不同的cpu設計理念和方法。
早期的cpu全部是cisc架構,它的設計目的是要用最少的機器語言指令來完成所需的計算任務。比如對於乘法運算,在cisc架構的cpu上,您可能需要這樣一條指令:mul
addra,
addrb就可以將addra和addrb中的數相乘並將結果儲存在addra中。將addra,
addrb中的數據讀入寄存器,相乘和將結果寫回內存的操作全部依賴於cpu中設計的邏輯來實現。這種架構會增加cpu結構的復雜性和對cpu工藝的要求,但對於編譯器的開發十分有利。比如上面的例子,c程序中的a*=b就可以直接編譯為一條乘法指令。今天只有intel及其兼容cpu還在使用cisc架構。
risc架構要求軟體來指定各個操作步驟。上面的例子如果要在risc架構上實現,將addra,
addrb中的數據讀入寄存器,相乘和將結果寫回內存的操作都必須由軟體來實現,比如:mov
a,
addra;
mov
b,
addrb;
mul
a,
b;
str
addra,
a。這種架構可以降低cpu的復雜性以及允許在同樣的工藝水平下生產出功能更強大的cpu,但對於編譯器的設計有更高的要求。
❷ 單片機匯編語言問題
程序本來就是這樣規定的啊 你還要解釋什麼呢
記住就好了 這是硬體電路決定的啊 分析不來的 其實在單片機里,每一條指令都只有一個專門的電路入口的,所以啊,我門只能按照它的規則來設計程序,而不能像MUL AR0,這樣都是錯誤的啊。
高低位的決定也一樣啊。
其實,兩個位元組相乘的話,它的乘積是不會超過兩個位元組的。
你說的FFH,不是還有個溢出嗎。低位元組滿了向高位元組進位啊。你還以為是列個乘法公式出來,一個一個這樣對下去啊,你試把它的值十進制轉成二進制,你就知道它能裝多大的數了。兩個8位相成填滿16位,你想可以嗎?肯定可以的。
❸ arm處理器乘法運算要幾個時鍾周期
要使用低成本的32位處理器,開發人員面臨兩種選擇,基於Cortex-M3內核或者ARM7TDMI 內核的處理器。如何做出選擇?選擇標准又是什麼?本文主要介紹了ARM Cortex-M3內核微控制器區別於ARM7的一些特點,幫助您快速選擇。
1.ARM實現方法
ARM Cortex-M3是一種基於ARM7v 架構的最新ARM 嵌入式內核,它採用哈佛結構,使用分離的指令和數據匯流排(馮諾伊曼結構下,數據和指令共用一條匯流排)。從本質上來說,哈佛結構在物理上更為復雜,但是處理速度明顯加快。根據摩爾定理,復雜性並不是一件非常重要的事,而吞吐量的增加卻極具價值。
ARM 對Cortex-M3的定位是:向專業嵌入式市場提供低成本、低功耗的晶元。在成本和功耗方面,Cortex-M3具有相當好的性能,ARM 公司認為它特別適用於汽車和無線通信領域。和所有的ARM 內核一樣,ARM公司將內該設計授權給各個製造商來開發具體的晶元。迄今為止,已經有多家晶元製造商開始生產基於Cortex-M3內核的微控制器。
ARM7TDMI(包括ARM7TDMIS)系列的ARM 內核也是面向同一類市場的。這類內核已經存在了十多年之久,並推動了ARM 成為處理器內核領域的主導者。眾多的製造商出售基於ARM7系列的處理器以及其他配套的系統軟體、開發和調試工具。在許多方面,ARM7TDMI 都可以稱得上是嵌入式領域的實幹家。
2.兩者差異
除了使用哈佛結構,Cortex-M3還具有其它顯著的優點:具有更小的基礎內核,價格更低,速度更快。與內核集成在一起的是一些系統外設,如中斷控制器、匯流排矩陣、調試功能模塊,而這些外設通常都是由晶元製造商增加的。Cortex-M3還集成了睡眠模式和可選的完整的八區域存儲器保護單元。它採用THUMB-2指令集,最大限度降低了匯編器使用率。
3.指令集
ARM7可以使用ARM 和Thumb 兩種指令集,而Cortex-M3隻支持最新的Thumb-2指令集。這樣設計的優勢在於:
●免去Thumb 和ARM 代碼的互相切換,對於早期的處理器來說,這種狀態切換會降低性能。
●Thumb-2指令集的設計是專門面向C 語言的,且包括If/Then 結構(預測接下來的四條語句的條件執行)、硬體除法以及本地位域操作。
●Thumb-2指令集允許用戶在C 代碼層面維護和修改應用程序,C 代碼部分非常易於重用。
●Thumb-2指令集也包含了調用匯編代碼的功能:Luminary 公司認為沒有必要使用任何匯編語言。
●綜合以上這些優勢,新產品的開發將更易於實現,上市時間也大為縮短。
4.中斷
Cortex-M3的另一個創新在於嵌套向量中斷控制器NVIC(Nested Vector Interrupt Controller)。相對於ARM7使用的外部中斷控制器,Cortex-M3內核中集成了中斷控制器,晶元製造廠商可以對其進行配置,提供基本的32個物理中斷,具有8層優先順序,最高可達到240個物理中斷和256個中斷優先順序。此類設計是確定的且具有低延遲性,特別適用於汽車應用。
NVIC 使用的是基於堆棧的異常模型。在處理中斷時,將程序計數器,程序狀態寄存器,鏈接寄存器和通用寄存器壓入堆棧,中斷處理完成後,在恢復這些寄存器。堆棧處理是由硬體完成的,無需用匯編語言創建中斷服務程序的堆棧操作。中斷嵌套是可以是實現的。中斷可以改為使用比之前服務程序更高的優先順序,而且可以在運行時改變優先順序狀態。
使用末尾連鎖(tail-chaining)連續中斷技術只需消耗三個時鍾周期,相比於32個時鍾周期的連續壓、出堆棧,大大降低了延遲,提高了性能。
如果在更高優先順序的中斷到來之前,NVIC 已經壓堆棧了,那就只需要獲取一個新的向量地址,就可以為更高優先順序的中斷服務了。同樣的,NVIC 不會用出堆棧的操作來服務新的中斷。這種做法是完全確定的且具有低延遲性。
5.睡眠
Cortex-M3的電源管理方案通過NVIC 支持Sleep Now,Sleep on Exit,(退出最低優先順序的ISR)和SLEEPDEEP modes 這三種睡眠模式。
為了產生定期的中斷時間間隔,NVIC 還集成了系統節拍計時器,這個計時器也可以作為RTOS 和調度任務的心臟。這種做法與先前的ARM 架構的不同之處就在於不需要外部時鍾。
6.存儲器保護單元
存儲器保護單元是一個可選組建。選用了這個選項,內存區域就可以與應用程序特定進程按照其他進程所定義的規則聯系在一起。例如,一些內存可以完全被其他進程阻止,而另外一部分內存能對某些進程表現為只讀。還可以禁止進程進入存儲器區域。可靠性,特別是實時性因此得到重大改進。
7.調試
對Cortex-M3處理器系統進行調試和追蹤是通過調試訪問埠(Debug Access Port)來實現的。調試訪問埠可以是一個2針的串列調試埠(Serial Wire Debug Port)或者串列JTAG 調試埠(Serial Wire JTAG Debug Port)。通過Flash片、斷點單元、數據觀察點、跟蹤單元,以及可選的嵌入式跟蹤宏單元(Embedded Trace Macrocell)和指令跟蹤宏單元(Instrumentation Trace Macrocell)等一系列功能相結合,在內核部分就可以採用多種類型的調試方法及監控函數。例如,可以設置斷點、觀察點、定義預設條件或執行調試請求、監控停止操作或繼續操作。所有的這些功能在ARM 架構的產品中已經實現,只是Cortex-M3將這些功能整合起來,方便開發人員使用。
8.應用范圍
雖然ARM7內核並沒有像Cortex 系列那樣集成很多外設,但是大量的基於ARM7的器件,從通用MCU,到
面向應用的MCU、SOC 甚至是Actel 公司基於ARM7內核的FPGA,都擁有更為眾多的外圍設備。大約有150種MCU 是基於ARM7內核的(根據不同的統計方法,這個數字可能會更高)。
你會發現ARM7都可以實現幾乎所有的嵌入式應用,或採用定製的方式來滿足需求。基於標准內核,晶元廠商可以加入不同類型、大小的存儲器和其他外圍設備,比如串列介面、匯流排控制器、存儲器控制器和圖形單元,並針對工業、汽車或者其他要求苛刻的領域,使用不同的晶元封裝,提供不同溫度范圍的晶元版本。晶元廠商也可能綁定特定的軟體,比如TCP/IP 協議棧或面向特定應用的軟體。
例如,STMicroelectronics 公司的STR7產品線有三個主要系列共45個成員,具有不同的封裝和存儲器。每一個系列都針對特定的應用領域,具有不同外設集合。比如STR730家族是專為工業和汽車應用設計的,因此具有可擴展的溫度范圍,包括多個I/O 口和3個CAN 匯流排介面。STR710則是面向於消費市場以及高端的工業應用,它具有多個通信介面,比如USB、CAN、ISO7816以及4個UART,還有大容量的存儲器和一個外部存儲器介面。
晶元廠商也可以選擇利於開發人員開發產品的措施,比如採用ARM 的嵌入式跟蹤宏單元ETM(Embedded
Trace Macrocell),並提供開發和調試工具。Luminary、STMicroelectronics 這兩家公司已經有基於Cortex-M3的晶元,其他公司如NXP、Atmel 也宣布生產該類產品。
9.配套工具
ARM7應用已經非常普及,它已經有非常多第三方的開發和調試工具支持。在ARM 的網站上有超過130家工具公司名稱列表。
大多數廠商提供了基本的開發板,並提供下載程序的介面、調試工具以及外部設備的驅動,包括LED 燈的顯示狀態或者屏幕上的單行顯示。通常,開發套件包括編譯器、一些調試軟體以及開發板。更為高級的套件包括第三方的集成開發環境(IDE),IDE 中包含編譯器、鏈接器、調試器、編輯器和其他工具,也可能包括模擬硬體,比如說JTAG 模擬器。內電路模擬器(ICE)是最早的也是最有用的調試工具形式之一,很多廠商都在ARM7上提供了這一介面。
軟體開發工具范圍很廣:從建模到可視化設計,到編譯器。現在很多的產品也用到實時操作系統(RTOS)和中間件,以加速開發進程、降低開發難度。另外,還有一個非常重要的因素,很多的開發人員對ARM7的開發經驗非常豐富。
雖然現在已經有新興的Cortex-M3工具,但顯然還是有一定的差距。不過,Cortex-M3的集成調試性能使調試變得簡單且有效,且無需用到內電路模擬器ICE。
10.決策
那麼,你應該如何做出何種選擇呢?如果成本是最主要考慮因素,您應該選擇Cortex-M3;如果在低成本的情況下尋求更好的性能和改進功耗,您最好考慮選用Cortex-M3;特別是如果你的應用是汽車和無線領域,最好也採用Cortex-M3,這正是Coretex-M3的主要定位市場。由於Cortex-M3內核中的多種集成元素以及採用Thumb-2指令集,其開發和調試比ARM7TDMI 要簡單快捷。
然而,由於重定義ARM7TDMI 的應用不是一件困難的事,特別是在使用了RTOS 的情況下。保守者可能會沿用ARM7TDMI 內核的晶元,並避免使用那些會使重定義變得復雜的功能。
IAR Systems 公司是最早做C 編譯器的廠商,提供一系列ARM 開發工具,包括IAR visualSTATE 建模工具、IAR Embedded Workbench for ARM 集成開發環境、IAR PowerPac 實時操作系統和中間件、J-Link 硬體模擬工具以及開發套件。不管用戶的選擇是ARM7還是Cortex-M3,IAR 都會讓開發變得簡單而有趣。
❹ 簡單指令集和復雜指令集的區別
RISC(精簡指令集計算機)和CISC(復雜指令集計算機)是當前CPU的兩種架構。它們的區別在於不同的CPU設計理念和方法。
CPU架構是廠商給屬於同一系列的CPU產品定的一個規范,主要目的是為了區分不同類型CPU的重要標示
早期的CPU全部是CISC架構,它的設計目的是要用最少的機器語言指令來完成所需的計算任務。比如對於乘法運算,在CISC架構的CPU上,您可能需要這樣一條指令:MUL ADDRA, ADDRB就可以將ADDRA和ADDRB中的數相乘並將結果儲存在ADDRA中。將ADDRA, ADDRB中的數據讀入寄存器,相乘和將結果寫回內存的操作全部依賴於CPU中設計的邏輯來實現。這種架構會增加CPU結構的復雜性和對CPU工藝的要求,但對於編譯器的開發十分有利。比如上面的例子,C程序中的a*=b就可以直接編譯為一條乘法指令。今天只有Intel及其兼容CPU還在使用CISC架構。
RISC架構要求軟體來指定各個操作步驟。上面的例子如果要在RISC架構上實現,將ADDRA, ADDRB中的數據讀入寄存器,相乘和將結果寫回內存的操作都必須由軟體來實現,比如:MOV A, ADDRA; MOV B, ADDRB; MUL A, B; STR ADDRA, A。這種架構可以降低CPU的復雜性以及允許在同樣的工藝水平下生產出功能更強大的CPU,但對於編譯器的設計有更高的要求。
復雜指令集計算機(CISC)
長期來,計算機性能的提高往往是通過增加硬體的復雜性來獲得.隨著集成電路技術.特別是VLSI(超大規模集成電路)技術的迅速發展,為了軟體編程方便和提高程序的運行速度,硬體工程師採用的辦法是不斷增加可實現復雜功能的指令和多種靈活的編址方式.甚至某些指令可支持高級語言語句歸類後的復雜操作.至使硬體越來越復雜,造價也相應提高.為實現復雜操作,微處理器除向程序員提供類似各種寄存器和機器指令功能外.還通過存於只讀存貯器(ROM)中的微程序來實現其極強的功能 ,傲處理在分析每一條指令之後執行一系列初級指令運算來完成所需的功能,這種設計的型式被稱為復雜指令集計算機(Complex Instruction Set Computer-CISC)結構.一般CISC計算機所含的指令數目至少300條以上,有的甚至超過500條.
精簡指令集計算機(RISC)
採用復雜指令系統的計算機有著較強的處理高級語言的能力.這對提高計算機的性能是有益的.當計算機的設計沿著這條道路發展時.有些人沒有隨波逐流.他們回過頭去看一看過去走過的道路,開始懷疑這種傳統的做法:IBM公司沒在紐約Yorktown的JhomasI.Wason研究中心於1975年組織力量研究指令系統的合理性問題.因為當時已感到,日趨龐雜的指令系統不但不易實現.而且還可能降低系統性能.1979年以帕特遜教授為首的一批科學家也開始在美國加冊大學伯克萊分校開展這一研究.結果表明,CISC存在許多缺點.首先.在這種計算機中.各種指令的使用率相差懸殊:一個典型程序的運算過程所使用的80%指令.只佔一個處理器指令系統的20%.事實上最頻繁使用的指令是取、存和加這些最簡單的指令.這樣-來,長期致力於復雜指令系統的設計,實際上是在設計一種難得在實踐中用得上的指令系統的處理器.同時.復雜的指令系統必然帶來結構的復雜性.這不但增加了設計的時間與成本還容易造成設計失誤.此外.盡管VLSI技術現在已達到很高的水平,但也很難把CISC的全部硬體做在一個晶元上,這也妨礙單片計算機的發展.在CISC中,許多復雜指令需要極復雜的操作,這類指令多數是某種高級語言的直接翻版,因而通用性差.由於採用二級的微碼執行方式,它也降低那些被頻繁調用的簡單指令系統的運行速度.因而.針對CISC的這些弊病.帕特遜等人提出了精簡指令的設想即指令系統應當只包含那些使用頻率很高的少量指令.並提供一些必要的指令以支持操作系統和高級語言.按照這個原則發展而成的計算機被稱為精簡指令集計算機(Reced Instruction Set Computer-RISC)結構.簡稱RISC.
CISC與RISC的區別
我們經常談論有關"PC"與"Macintosh"的話題,但是又有多少人知道以Intel公司X86為核心的PC系列正是基於CISC體系結構,而 Apple公司的Macintosh則是基於RISC體系結構,CISC與RISC到底有何區別?
從硬體角度來看CISC處理的是不等長指令集,它必須對不等長指令進行分割,因此在執行單一指令的時候需要進行較多的處理工作。而RISC執行的是等長精簡指令集,CPU在執行指令的時候速度較快且性能穩定。因此在並行處理方面RISC明顯優於CISC,RISC可同時執行多條指令,它可將一條指令分割成若干個進程或線程,交由多個處理器同時執行。由於RISC執行的是精簡指令集,所以它的製造工藝簡單且成本低廉。
從軟體角度來看,CISC運行的則是我們所熟識的DOS、Windows操作系統。而且它擁有大量的應用程序。因為全世界有65%以上的軟體廠商都理為基於CISC體系結構的PC及其兼容機服務的,象赫赫有名的Microsoft就是其中的一家。而RISC在此方面卻顯得有些勢單力薄。雖然在RISC上也可運行DOS、Windows,但是需要一個翻譯過程,所以運行速度要慢許多。
目前CISC與RISC正在逐步走向融合,Pentium Pro、Nx586、K5就是一個最明顯的例子,它們的內核都是基於RISC體系結構的。他們接受CISC指令後將其分解分類成RISC指令以便在遇一時間內能夠執行多條指令。由此可見,下一代的CPU將融合CISC與RISC兩種技術,從軟體與硬體方面看二者會取長補短。
復雜指令集CPU內部為將較復雜的指令解碼,也就是指令較長,分成幾個微指令去執行,正是如此開發程序比較容易(指令多的緣故),但是由於指令復雜,執行工作效率較差,處理數據速度較慢,PC 中 Pentium的結構都為CISC CPU。
RISC是精簡指令集CPU,指令位數較短,內部還有快速處理指令的電路,使得指令的解碼與數據的處理較快,所以執行效率比CISC高,不過,必須經過編譯程序的處理,才能發揮它的效率,我所知道的IBM的 Power PC為RISC CPU的結構,CISCO 的CPU也是RISC的結構。
咱們經常見到的PC中的CPU,Pentium-Pro(P6)、Pentium-II,Cyrix的M1、M2、AMD的K5、K6實際上是改進了的CISC,也可以說是結合了CISC和RISC的部分優點。
RISC與CISC的主要特徵對比
比較內容 CISC RISC
指令系統 復雜,龐大 簡單,精簡
指令數目 一般大於200 一般小於100
指令格式 一般大於4 一般小於4
定址方式 一般大於4 一般小於4
指令字長 不固定 等長
可訪存指令 不加限制 只有LOAD/STORE指令
各種指令使用頻率 相差很大 相差不大
各種指令執行時間 相差很大 絕大多數在一個周期內完成
優化編譯實現 很難 較容易
程序源代碼長度 較短 較長
控制器實現方式 絕大多數為微程序控制 絕大多數為硬布線控制
軟體系統開發時間 較短 較長
❺ 希望大家可以一塊學習c/c++。。。。
我的建議是,學習語言不能太急功近利。以下是一個電腦專家,增長了深厚的感情,我看你。 <br /> ==============這些天我一直在寫一個實時操作系統內核,有小變============== ============= <br />等全部完成,我會打開,並希望能夠為國內IT的發展盡自己的微薄之力。最近看到很多學生朋友和相同的方向,這樣一來彼此鼓勵我的經驗寫出來,希望能給朋友剛入行的一點點幫助。 <br /> <br />在IT行業超過7年的學習和工作的閃光,在這期間我做了網路寫MIS,資料庫,應用程序,工作,通信軟體,硬體驅動,協議棧,到現在做的操作系統內核和IC開發,中間走了很多彎路,也吃了很多苦。 <br /> <br />我是一個三流大學,連同一個城市的人多數都不知道。因為學校的不好,有沒有想到成名的學校,找到一份好工作。所有的希望都寄託在自己的努力,大一學校在假期前,我就開始學習,我還記得第一本書我買了電腦的基本DOS3.0不是嚇唬,其實,已經是普遍的DOS6.22,只是我在書店裡DOS4 0.0,5.0,6.0的書,以為像英語一樣,第四,第五,六,記得找DOS1.0現在,我認為這是幸運,我沒有找到:)我學完了PASCAL在學期開始前,然後既沒有電腦,沒有人可以問,我連接的程序的概念是什麼只好死記硬背代碼,然後拿紙寫,我一直到大三有486本文之前寫一個程序,我可以不記得了,只知道最長的一個我拿草稿紙寫了30多頁的A4尺寸,C語言,C + +,VC都是在這樣的條件下進入。這樣的條件可以克服的,我希望我的經歷多少的學生的信心苛刻的條件。第一次上機是在我姐夫的機房,我感到興奮無法比擬的,但是一上機我立刻傻了眼英文版本in3.1,我的DOS知識點是鬼,機器緊張一陣大驚小怪,不小心造成的話全屏,怎麼不是原始的,它是真急了,我以為機器出了。 C語言程序,就是經典的HelloWorld,我調了幾個星期,機會非常少的機器,有沒有書告訴我開發環境(TC2.0)需要設置,而且開始我不知道編譯器我什至嘗試是聰明的書面程序的分機。 C變化。 exe文件,其結果可想而知。大一學生完成學校C X86匯編的數據結構,C + +。的精力都花在自學的大型四門課程掛了彩,三類學校是一個很好的點,掛一20還照樣畢業。但拉遠點我這么努力都失敗了,可以看出剛性計算機教育在我國。 <br /> <br />大二學生准備學VC和BC很難選擇,後當選VC,不為別的,只兩本書的書店,VC便宜6美元。我的努力,沒有人在課堂上和學校的白天和黑夜,尤其是初級的電腦很多次父親半夜教訓我說我不想要的生活,我一直認為他們的基礎設施較差,回憶沒有條件不是很好,所以我覺得只花更多的時間來趕上其他。其實後來,我的很多朋友說我是一個學校的計算機的天賦,讓我哭笑不得。我486,16 M內存,1G硬碟同學配置是P166MMX的,我安裝一個indowsNT4.0的需要一個通宵,編譯一個BC5.0向導程序所產生的需要近兩個小時,我的顯示器使用,並輻射是非常大的開機畫面火花看起來很酷的:),一旦程序太長,覺得怎麼白色的編輯器背景變成紫色,顯示眼睛不好,不僅發現較晚,但說奇怪,我的眼光,但也保持了1.5確實是一個奇跡。但它是伴隨著破碎機是我兩年,我學會了VC,DELPHI,SQLSERVER。後來那台機器給我阿姨打字後,根據她的一天,她玩的開心波的煙霧夾著消防演習顯示,它是走到了盡頭。 <br /> <br />大三假期找機會在一個計算機研究所實習實習了這么多,因為它是一個志願者,做了兩個月,沒拿一分錢。但過去兩個月來幫助我發展,讓我退後一步了解了社會,剛去,當然,我什麼都不知道在那裡我很熟悉??網路,並學習到Delphi和Oracle。更好的評價工作十分重視,在轉介的老人,我開始做項目,這使得他們的收入在三大四季皆宜找到兩個主場的MIS公司兼職,雖然多少錢,但在1000多的收入學生我已經很滿足了,我終於用自己的錢一台電腦。大四開始找工作的,然後我的工作經驗(當然,現在,我覺得很幼稚),開始聽父母希望去實習的那個部門也希望我能去研究所,但不知道為什麼最後什麼都沒有,這個單位是一個比較的官僚,我一氣之下向我兼職的一個公司做MIS的TeamLeader。初中畢業一年,做了MIS,天然氣,煙草,公安,鐵路,飲食上大學,什麼樣的錢,工作很辛苦,經常加班和熬通宵,從與客戶的設計要求,編碼,測試,交付必須打開。我覺得很有成就感,感覺還不錯,現在,我認為這實在是膚淺的。 <br /> <br />剛走上工作的學生很容易被誤導,各種開發工具讓人眼花繚亂氣餒,覺得很受歡迎的公司,但是這始終是一個較低的發展水平。不要告訴我什麼是多麼的重要,有多少是很難系統的分析。你覺得他們跟用戶需要設計系統的分析和設計,國內也有幾家公司能夠做到這一點很規范的地方呢?我在Rational獲得ISO9000內審員幾次培訓,花了四個證書,還有一個公司讓我去做CMM。我聽說了很多,但事情到了國內大量的改變了性質,一個公司不是通過了ISO9000或CMM將能夠標准化,我現在是在數十年之久的外國公司工作,管理不一般的國內企業。未通過門廊早,社會的研究生,在很短的時間內幾乎是不可能的,掌握了系統的分析和設計,面向對象,UML只是一個工具,關鍵是人的思想是不是說你熟悉C + +,羅斯將是能夠做出好的設計,相反的,如果你有一個高品質的,你可以寫在C比別人用C + +程序更加模塊化。 <br /> <br />說,目前,國內軟體開發行業有一個惡性循環,很多人覺得VC> Delphi的> VB真的是很有趣的。他們說,我做了幾個>軟體開發工具的選擇應根據應用程序的需要,而不是感覺一個更高的水平。如果您選擇與開發工具很有面子,只能說明你很淺。如果水平,這些工具都不到一個更高的水平,因為它們被用??來花的,是一些系統的API,微軟的朋友不會因為你記住他們的API的類的數量會認為你是偉大的,你永遠只是他們的客戶,他們看重的是在你的口袋裡的錢。我一直在系統內核,我也封裝了許多的API,同樣我也不會使用這些API做二次開發,除非他能夠使自己獨特的設計價值的客戶。 <br /> <br />有些人認為C + +> C,它讓人開懷大笑,你可能要問,現在有幾個操作系統內核是寫在C + +中,有一些真實系統使用的C + +,當然,我不是說C + +不好,但是目前的內核和實時系統在C + +還無法與C比賽,至於說C + +做應用程序開發的又是另一回事。所以,我的問題不在於你用什麼工具和語言,而在於你有什麼打算工作。你的設計體現了你的技術水平。 <br />一遍,我覺得很壓抑,所有技術行業最生活個人技術上沒有太多的提高也看不到方向。所以,我決定離開這個城市去上海,尋求更好的發展,並且打算放棄我不得不去通信行業的管理信息系統。 <br /> <br /> <br />寫到這里不能不提到我女朋友,我們是來上海在上半年的意識,她的前輩在我們公司實習,公司派她給我寫的文檔中,我們的情緒發展很快。她告訴我很多事情,她家是改革開放的第一批暴發戶,她母親愛打牌,輸了幾萬元,還欠了很多債,她有男朋友,但她有沒有對他的感情,只因為他給了兩萬塊錢,她的母親,後來又強迫她到四萬IOU她的男友背叛了她,打她不止一次,被迫嫁給她,或者告訴她還錢。這個人其實是一個大學老師!她的母親的父親,她的學費花了,因為拖欠學費她沒有辦法拿到畢業證書。她的母親病了需要錢,我拿出自己的積蓄,並挑選了一些時間與他們的朋友,以支付她的學費錢消失了(後來才知道,醫生和醫生給了她的母親,即使她的母親是不生病了,我不知道,但她沒有辦法)。這一次,我知道有些事情對我牢固地結合在一起,而且她還試圖破壞她的前男友。無奈之下,我們決定必須早點離開這個傷心的城市,我們的家不知情的情況下。由於時間所限,我只打算到4000美元,她只有幾百塊錢去她的母親,我買了三張票,一個中午,中午兩個晚上我的家人,我的船,他們走了,我下車船,我和她乘坐夜船離開這個城市和她生活了很多年,,只是拿走債務。沒有來過上海,兩地的我們固執,都不願意去麻煩同學和朋友。來到上海,在傍晚6點半,我們不知道哪裡去了,炎熱的七月天氣,我們必須找到一張20美元的酒店,這個房間有窗戶,房間里非常悶熱。在未來一天我們開始租一間公寓,因為在身體多錢,我們都基本上走,花了一個星期的時間,不知如何多圈在浦東轉找到400的房子,但我們也並不了解上海支付三重壓力,但也到支付的代理費的一半,購買一些鍋和平底鍋,只有800美元,工作已不被提供,以支持在800美元,以獲得我們的第一個月工資,為了省錢我們自己做飯每天只花了2塊錢買吃的,她非常喜歡吃(可能在大學里,她經常挨餓的願意),看到她省吃儉用我真的沒有心。她的前男友並沒有離開她一個人,通常被稱為騷擾,看到她,並說了很多恐嚇她,她說,他是太不厚道了,畢竟,幫助她,他告訴我,不要彎腰。經過一整天在家裡等待面試,我本來想快速找到MIS眼前的困難,但是她堅持讓我不要放棄自己的理想,終於功夫不負有心人,我找到了一家通信公司,4000工資與MIS給我開出的價格,但也夠在上海生存。她也找到了工作,第一天的工作,她哭了,這是她第一次流淚,我心裡很難受,也很感動。 <br /> <br />新的行業,自己到零,VC,Delphi中,我學到了資料庫沒有用的,是嵌入式的,放在我的面前,我沒有接觸過的知識的信號協議。我知道我不撤退,這么難學,我自己作為一名應屆畢業生,作為努力獲得過去6個月,我終於熟悉的工作,和公司的認可的工資加上一個。後來的日子裡,我們省吃儉用,朋友還欠超過一萬美元,這一天終於在正確的軌道上。女友告訴我,她的願望就畢業了,我也很支持,她辭掉了工作,提高備考。 <br /> <br />另外,在這里我要感謝我的ProjectManager,他竟然是一個大通信公司的產品經理,和人民非常善良,我從他身上學到了很多東西,和他給了我很多無私的幫助。他給了我工作的充分的空間和信任。記得公司安排維修接入伺服器軟體,信息和文件不完成的代碼量是不是太小(5萬行),我仍然是非常困難的,所以我想重新做一遍,公司領導層不支持,可能覺得工作量太大,但是他極力支持我私下認為,他讓我做的維護工作他擠時間做。我花了6個月,在他的支持,完成的接入伺服器>軟體,和一個相對完整的TCP / IP協議棧。在這里,我學會了嵌入式系統設計驅動的開發,知識的TCP / IP,以及大量的通信,我花了一年時間,最後轉移到通信行業,從MIS開發中,並站穩了腳跟。我公司開發了大量的硬體的直接操作,不再在微軟的操作系統,VC,DELHPI這些開發工具的約束,我終於看到了另外一片天空。 <br /> <br />我做的事情就像生根隨著軟體開發和硬體的發展,深化底部的聯系越來越緊密,硬體知識的缺乏和發展的障礙,而且晶元技術基本上掌握在外資手中公司開出的限制,系統級設計是一個非常大的,一個新產品的第一個(通常是最賺錢的),通常是IC的公司,如英特爾,摩托羅拉賺的利潤,國內廠商只能喝點湯。所以我決心解決自己的硬體技術障礙,並打算離開通信行業,進入IC設計相關領域。 <br />當然,我明白,如果我了解的很少,硬體的IC公司會仁慈的欺騙我什麼都不知道,一個人訓練。所以,我必須工作打下了堅實的基礎,學習一些知識,為將來做好准備。我已經看到了很多的通信方面的書,就像我開始從MIS的通信,和一個ISP的RADIUS計費分揀完成,在這種情況下,該通信公司給了我這個機會。通信公司,我做系統設計,有很多PCBLayout的硬體人員,不管怎樣,我注意向他們學習,因為我做軟體,該公司的硬體資料不好意思,所以開始在家裡看剛剛在上海工作了一年加班,後來沒有,因為我要擠出時間學習,我平時12:00和5:30左右睡覺,第二天,我去工作前,在地鐵上,如果沒有很多人,我也用讀的書。學習當然不會是容易的,有些真的做不明白的問題積累問硬體人員,他們幫助我學習進度快很多,,因為沒有人教練自學,一半我的時間是花在解決困難的問題,但往往別人的的話讓我豁然開朗,我很高興我有這樣的學習環境。在後面的一年,我學會了看硬體原理圖,學會了簡單的硬體設計(模擬電路,有不小的差距),這樣的事情,當你做>軟體,安安份份人永遠是你>軟體開發人員,你開始學習硬體,其他人可能不同意,中興通訊的朋友還告訴我,一個人不能把一切都完成。我也明白,但我希望他們做的更好。但當你熟悉硬體,大家會覺得你似乎了解,原來是硬體和軟體,和同事們習慣。我的硬體信息可以站起來,讓公司看到沒人大驚小怪。我更加自豪的是,我通過自己的努力IAD(軟交換的終端設備)系統解決方案,包括硬體和軟體的選型,設計,內容,這個方案已經本公司及同事的認可,使我感到非常高興。 <br /> <br />技術是相輔相成的,我的硬體已經取得了一些進展,I>軟體設計有了很大的提高,我可以更深入地了解這些問題,我做的接入伺服器CPU是MotorolaPowerPC860,熟悉的朋友知道860QMC>軟體通常批量數據傳輸BD表硬體人員做驅動的習慣,固定BD表,每接收或發送數據,將數據從BD表時,了解深入到用戶緩沖區,或從用戶緩沖區考</托尼BD表,我要重新實現這個過程,採用動態BD表,驅動器接收數據從一個網路介面,提交給我>軟體層交換,直至從另外的介面發送,無可復制。這樣的設計大大提高了系統的性能指標接近理論值。結合了硬體和軟體設計到一個新的水平。我現在寫的操作系統,編譯程序反編譯成匯編,找出其中不優化的代碼,然後調整C程序。例如,大量的CPU專門的乘法指令,我們應該知道一個乘??法操作常常花費大量的指令周期,其中的CPU,有些朋友會說這個我知道,我會盡量避免採用×號,但是事情往往沒有這么簡單,你知道C語言中數組的下標操作是如何實現這一目標?仔細看看反匯編的代碼你就會明白,同樣的標定位操作,C編譯器有時會產生位移指令,但有時候乘法,兩者效率往往是不同的,所以我能理解這些問題,以提高系統的性能極致。這些問題不說,有興趣在未來可以探索。 <br />說遠一點,我真誠地希望>軟體做更多的深入的朋友有機會學習硬體,以及其他相關的知識,特別是底部的開發和嵌入式設計。 >軟體技術,以提高非常大的幫助,還是有很多的事情,你只知道,但不明白為什麼這樣。我的看法已經,在IC公司ProjectManager驗證的。他告訴記者,該公司現在的802.11晶元產品的軟體經理原本做硬體設計的晶元,有一定的原來做軟體,現在在做IC,類似的例子很多,只是讓國內的氣氛不是很受歡迎。 <br /> <br />我有一些經驗與大家分享,當我做了很好的工作,我將學習與工作的關系,是不是技術,讓老闆,如果他們不進攻,在入門階段這個問題,我通常不會去那些誰是退伍軍人,而是問一些資歷比較淺的朋友,比如剛畢業的學生,??因為他們往往??會告訴你詳細的解釋,而資深人士通常覺得你的問題太簡單了,所以答案也很簡單,我不好意思問。因此,在技術上有一定的水平,我會問他們,他們可以給你一個更深入的回答。另外,有些朋友說我更好的機會,他們也希望能從事遺憾的是,沒有新的工作,我聽了只有苦笑,我的機會了解的人應該知道,我沒有出生在什麼家庭:)也沒有一個提拔我所有的方式,所有的走出來的,我母親去世比較早,我的後母(我叫她阿姨)看著我的努力,隨著時間的推移,她看我大年30還在寫程序,她說像我的硬碟木材可以學習。 <br /> <br />我的最終目的是IC而不是PCB,所以我下一步的准備開始學習IC設計的知識。同工不明白的IC設計,回來的路上我自己的,我買了很多相關的調查,網上很多資料的書,我花了很多時間去學習VHDL,並且用軟體簡單(沒有設計ASIC設計和模擬,只為FPGA),隨著學習的深入,我漸漸明白了IC設計的基本流程,而且要了解的艱辛之路。這一次,我已經做好了准備退出這個行業有一定的知名IC設計公司投簡歷,並經歷了漫長的面試(4小時)。其他都比較滿意,與異常的薪水過得去,我明白了為什麼,因為我是新的行業,我沒有經驗,我再次清除。公司老闆問我6000多一個月能不能接受,我知道他也掌管。想想我通信行業的朋友,基本上都是年薪10萬以上,月薪過萬的比比皆是,朋友向我介紹了很多很好的治療公司,我該怎麼選擇,我很猶豫,我熱愛我的職業生涯中,我我嚮往我的追求,但我也是一個普通的人,我也需要養家糊口,我想提前買了車。生活給我的問題。 <br /> <br />愛因斯坦63歲說,「一個人在30歲前在科學最偉大的成就沒有達到,他將永遠不會有。」這讓我的壓力很大,振動,我將26歲,從30,只有4年,我一定要抓住這幾年寶貴的時間,努力達到我的技術高峰。訂購離自己的夢想更接近這個理想,我選擇了這個IC公司,我明白自己的工資和公司剛進入研究生幾乎是相同的,但為今後的發展只能忍受,一切又得重新開始。對於行業是一個非常痛苦的過程,尤其從一個春風得意的位置變化到一個不熟悉的位置,跳進冰水中,感覺象從溫暖的被子里鑽出來不可接受的。原通信公司只有兩年至5倍工資的員工,公司和同事們給了我很大的肯定,工作往往是委以重任。但現在這一切都成了過去,在新的公司我只是一個新人,沒有人知道,沒有人在意我過去的成績。我決定重新開始,我把自己看作新畢業的學生,??我想用自己的努力獲得認可的公司。進入新的行業是非常痛苦的,我告訴自己必須忍受著這一切,雖然很多誘惑擺在那裡,已經做出了選擇,我不會讓自己輕易放棄。 <br /> <br />我已經在這家新公司在超過一個月的班,開始慢慢適應一個非常困難的。結束的第一個月,TeamLeader找我說話,說我是最優秀的員工,我感到非常高興,這也算是我的一個積極的努力。還要感謝我的女朋友,她給了我很多的支持和鼓勵,每次我動搖時,她鼓勵我,讓我堅持自己的理想,她第一次來到上海,我不勉強做MIS,這是她的我頂住了月薪過萬的誘惑,沒有她我可能不會有今天的成績。 <br /> <br />公司擁有自己的操作系統,自己的CPU,DSP和其它晶元,在這里我能夠學習最先進的技術在世界上,我們的設計開發不再完全依賴別人的硬體和系統,這讓我很高興。我打算在正確的軌道,努力學習新知識,實現我的理想。 <br /> <br />我給自己定下一些目標在後面兩年:<br /> <br />。努力做好自己的工作,工作得到公司和同事的身份; <br />努力學習IC硬體設計知識,多向同事提供意見,並充分利用每一個機會來實踐和更多; <br /> 。實現我的實時操作系統的主要部分,完成TCP / IP協議棧模塊,並免費發布源代碼;:<br /> IV。結婚並買一套小房子,和我的女朋友,這是最重要的,因為據我了解,可重復的原因,但是珍貴的感情很難恢復了。 <br /> <br /> <br />這里要提一下,我公司開發的操作系統,它是一個實時嵌入式系統,目前支持以下功能:<br /> <br />一個循環支持調度和基於優先順序調度,最多為64個優先順序; <br /> B。搶占式實時內核; <br />?,便攜性,主要通過使用標准C; <br />e非常小的匯編代碼,不到100行;實現<br /> e支持任務管理,各任務有獨立的堆棧; <br /> F。進程同步和通信目前正在調試的信號量的MessageQueue <br />克。定時系統調用; <br /> h的車窗上模擬調試<br />我還打算到下一個優先順序反轉保護EventFlag,數據管道,內存管理(原)驅動器介面。在此之後,我將努力對其進行改進,如添加一個文件系統,協議棧,調試介面。我希望我的朋友們提出了自己的意見和建議,明白這一點! <br /> <br />後記:<br />像有些朋友說,我的經驗可能會誤導我的一些朋友,在這里我要解釋一下。我以前學習過於拚命,往往超過3個小時睡了一晚,我身高1米71,只有108斤(我現在130多),家人,我拚命地生活,但60歲的,但當時我太固執,我告訴他們實現理想的生活,50歲,我受夠??了。時拚命使我的身體受到影響,有一次早上突然腰肌劇痛難忍的痛苦,在床上,我會受不了。雖然我現在更加重視,但有時疼痛。後來在女朋友說服了我,我不再是上海的情況。我經常引用他父親的話,「身體是革命的資本」。 <br /> <br />而我也發現拚命不是問題的答案,我可以多熬12過夜,大部分的時候,我連續工作了三天三夜,但兩個星期都沒有恢復,所以這不是得不償失?學習和工作應該是一個長期的過程,就像一場馬拉松,不是100沖刺。我真的要注意調整學習和工作的強度,我要盡可能保證每天與相對充沛的精力,一些年輕的朋友們感到絕望的努力,這讓我有些擔心,如果我的故事可以讓你學習工作是多一點的興趣,我很高興,但如果誤導了一些朋友,所以你不值得付出,我會??感到很內疚。 <br /> <br />技術不高或低之分,只有我的行業,因為由於他們的利益,而不是什麼偏見,行業。我希望我的經驗給朋友不會引導錯誤,我覺得我始終向更高的技術發展。事實上,社會各界的頂做是非常困難的。再說,雖然技術不高或低,但閾值水平,在任何情況下,比IC門檻高的頁面,這是無可否認的。國家各種人才都需要,但作為個人的想法應該力求更好地做自己喜歡的行業,不應該停留在比較淺的層面。 <br />我覺得更多的自我認識,也許是我最大的優點是知道有很多缺點:)。我的故事,很多的曲折和錯誤都是由我的缺點,我希望你看在我的經驗,謹慎的眼睛,不要被我的「花言巧語」所迷惑。我學習有些隨心所欲,這給我帶來了無盡的煩惱,但也極大地阻礙了我的發展。我記得我年輕的時候比較好的效果,但是後來學習嚴重偏科,導致我的高中成績一再滑坡,也沒有考上好學校,一個兒時的朋友,類似的結果的時候,和我,但不是我的的缺點,她上清華,後來在去美國深造,在著名的導師男人理論科學,這可能是一個更好的出路。其他的學習方法繼續改善,在過去的學習是重視的數量和時間,學習是痛苦的。低效的,我現在密切關注效率的學習和技能,這是快捷方式學習(當然,不是指投機取巧),例如,要學會一個相對陌生的技術,如果有條件的話,不妨問有經驗的人,並不需要問了很多,他常常不經意地幾句話會給你非常大的幫助,甚至比你看到這本書的一周。帶著這個想法,去學習,你將節省大量的時間,那麼為什麼不呢?多年來,我學到了很多的東西,由於開始非常盲目的,隨意的回顧學到了一些東西,現在讓我知道是該笑還是該哭,我浪費了很多時間,也沒有必要深入了解的知識,畢竟一個人的精力是有限的。很多朋友非常喜歡我背五筆字形,這的確是一個好的輸入法,但R&D人員來說,絕對是不值得你回去,你的時間應該花在有價值的。我喜歡的東西也做了很多,我背過CCED WPS的命令和快捷鍵的dBase基本退出了歷史的舞台,我也花了很多時間去學習它。所以我的學習在早期缺乏規劃,沒有明確的目的的短??期,中期目標,只有一個模糊的和長遠的眼光。這就像做設計,好的設計是抽象的過程,從需求編寫了很多,需求不能立刻開始開始編碼。