• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            XY

            沒(méi)有任何借口
            posts - 9, comments - 31, trackbacks - 0, articles - 0
              C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

                                                                                                   程序是如何運(yùn)行的

            作為一個(gè)程序員,已不知編了多少行代碼。但若問(wèn)我程序是如何在計(jì)算機(jī)中運(yùn)行的,我怕只有張口結(jié)舌。書(shū)中第一章就給了我們相關(guān)的答案。

            首先,看如下最簡(jiǎn)單的C語(yǔ)言Helloword的代碼

            1#include <stdio.h>
            2
            3int main()
            4{
            5   printf("hello, world\n");
            6}
            上面的代碼我們保存在helloworld.c文件中。其本質(zhì)實(shí)際上是由0、1的比特(位)序列構(gòu)成的。8位為一個(gè)字節(jié)。每個(gè)字節(jié)對(duì)應(yīng)某個(gè)文本字符。不少系統(tǒng)用ASCII來(lái)表示文本字符。實(shí)際是由一個(gè)唯一的同字節(jié)大小的整數(shù)值來(lái)表示每個(gè)字符。下面給出helloworld.c的ASCII表示。
            #      i         n        c       l       u       d      e     <sp>   <     s     t        d        i       o      .
            35   105    110    99    108  117  100   101   32     60  115  116   100   105  111  46
            h       >      \n       \n      i        n      t     <sp>   m      a      i       n       (       )      \n     {
            104  62     10     10     105  110  116   32    109    97   105  110   40    41   10   123
            \n     <sp> <sp> <sp> <sp>   p      r      i       n        t       f      (       "      h       e       l
            10    32     32     32     32    112  114  105  110    116  102  40    34   104   101   108
            l       o       ,        <sp>  w      o      r       l      d        \       n       "       )       ;       \n      }
            108 111    44     32     119  111  114  108  100    92    110  34    41   59      10     125
            以此類(lèi)推,在計(jì)算機(jī)系統(tǒng)中,任何介質(zhì)中的數(shù)據(jù)都是比特序列。把他們區(qū)分成不同的數(shù)據(jù)對(duì)象,是通過(guò)數(shù)據(jù)對(duì)象的上下文來(lái)確定的。

            程序編譯
            程序的編譯過(guò)程如下圖所示,分為預(yù)處理、編譯、匯編、鏈接等幾個(gè)階段。

            預(yù)處理:預(yù)處理相當(dāng)于根據(jù)預(yù)處理命令組裝成新的C程序,不過(guò)常以i為擴(kuò)展名。
            編譯:    將得到的i文件翻譯成匯編代碼。s文件。
            匯編:    將匯編文件翻譯成機(jī)器指令,并打包成可重定位目標(biāo)程序的O文件。該文件是二進(jìn)制文件,字節(jié)編碼是機(jī)器指令。
            鏈接:    將引用的其他O文件并入到我們程序所在的o文件中,處理得到最終的可執(zhí)行文件。

            硬件組成:
            從下圖中看出一個(gè)典型的系統(tǒng)由總線、Cpu、I/O設(shè)備、主存等構(gòu)成。

            CPU: Central Processing Unit,  ALU: Arithmetic/Logic Unit,  PC: Program counter,  USB: Universal Serial Bus.

            程序執(zhí)行
            我們已經(jīng)討論了可執(zhí)行文件產(chǎn)生的過(guò)程。接下來(lái)討論哈可執(zhí)行文件執(zhí)行的過(guò)程。從上面途中的彩色線條可以清晰的看到這個(gè)過(guò)程,我們簡(jiǎn)單的把它分為6步。
            1.shell程序執(zhí)行指令,等待用戶(hù)輸入,這里我們輸入“hello”。
            2.shell程序?qū)⒆址鹨蛔x到寄存器中
            3.再?gòu)募拇嫫魅〕龇诺街鞔嬷?br>4.當(dāng)我們敲入回車(chē)時(shí),shell程序得知輸入結(jié)束,將hello目標(biāo)文件的代碼和數(shù)據(jù)拷貝到主存,從而加載hello文件數(shù)據(jù)包括最終被輸出的字符串“hello,world\n”.利用了DMA訪問(wèn)技術(shù),數(shù)據(jù)可不經(jīng)CPU直接到主存
            5.執(zhí)行主程序中的機(jī)器語(yǔ)言指令,將“hello,world\n”串的字節(jié)從主存拷貝到寄存器堆。
            6.從寄存器中把文件拷貝到顯示設(shè)備。

            Feedback

            # re: 深入理解計(jì)算機(jī)系統(tǒng)1_程序是如何運(yùn)行的  回復(fù)  更多評(píng)論   

            2008-07-05 17:53 by passerby
            頂。
            是本好書(shū),只是現(xiàn)在還沒(méi)時(shí)間去看。

            # re: 深入理解計(jì)算機(jī)系統(tǒng)1_程序是如何運(yùn)行的  回復(fù)  更多評(píng)論   

            2008-07-05 23:33 by 訪客
            你這個(gè)基本上就是摘抄的

            前3章看著比較吃不消

            特別是第三章 y86架構(gòu)的研究與實(shí)現(xiàn)

            剩下的直到unix io 網(wǎng)絡(luò)編程 多線程之前 是本書(shū)的精華部分 值得通讀

            # re: 深入理解計(jì)算機(jī)系統(tǒng)1_程序是如何運(yùn)行的  回復(fù)  更多評(píng)論   

            2008-07-05 23:51 by 路緣
            @訪客
            第一章內(nèi)容很少,也沒(méi)有其他自己的體會(huì)。就把自己認(rèn)為主要的東西羅列一下。
            第二章信息表示和處理,以及第三章C的匯編表示,就肯定會(huì)用自己的理解來(lái)描述。因?yàn)槲以陂喿x時(shí),確實(shí)很多地方都是反復(fù)閱讀,才明白了其中的道理。
            后面我還會(huì)繼續(xù)相關(guān)的隨筆,會(huì)加入自己是如何從不明白到明白這個(gè)過(guò)程的描述。

            其次感覺(jué)這本書(shū)習(xí)題也編得很好,看書(shū)看不明白,把題做了過(guò)后,感覺(jué)就明白了。

            可能我以后若是歸納總結(jié)書(shū)上的內(nèi)容,注明讀書(shū)筆記可能會(huì)好些。因?yàn)榫退闶菍?xiě)理解,也是來(lái)源書(shū)上的觀點(diǎn)。

            # re: 深入理解計(jì)算機(jī)系統(tǒng)1_程序是如何運(yùn)行的  回復(fù)  更多評(píng)論   

            2008-07-06 11:19 by ZelluX
            @訪客
            y86是第四章
            這本書(shū)是我們專(zhuān)業(yè)課的教材,上一年,除了第九章都講了,收獲很大

            # re: 深入理解計(jì)算機(jī)系統(tǒng)1_程序是如何運(yùn)行的  回復(fù)  更多評(píng)論   

            2008-07-08 22:48 by 劉遠(yuǎn)清
            這本書(shū)確實(shí)很牛逼!那天看了你的文章就去網(wǎng)上找了電子書(shū)來(lái)看,剛看完了一章,講的夠清楚,值得一看!

            # re: 深入理解計(jì)算機(jī)系統(tǒng)1_程序是如何運(yùn)行的  回復(fù)  更多評(píng)論   

            2008-07-10 23:17 by 夢(mèng)在天涯
            看了你的第一張就知道是好書(shū)了,謝謝,以前沒(méi)有看過(guò)啊,要是有的化,給大家個(gè)地址,大家保證更高興啊!

            # re: 深入理解計(jì)算機(jī)系統(tǒng)1_程序是如何運(yùn)行的  回復(fù)  更多評(píng)論   

            2008-07-10 23:23 by 夢(mèng)在天涯
            能不能說(shuō)下,書(shū)的全名,說(shuō)是chinapub的連接!謝謝先!

            # re: 深入理解計(jì)算機(jī)系統(tǒng)1_程序是如何運(yùn)行的  回復(fù)  更多評(píng)論   

            2008-07-11 12:55 by 路緣
            @夢(mèng)在天涯
            我還以為大家都知道這本書(shū)呢。全名就是我寫(xiě)的啊,
            英文名是《Computer Systems A Programmer’s Perspective》
            不過(guò)電子版我只有英文版的。這本書(shū)覺(jué)得值得買(mǎi)本紙版的來(lái)珍藏。
            本來(lái)說(shuō)共享個(gè)電子版的鏈接,但老是出問(wèn)題上傳不上去。很好找的。
            http://www.programsalon.com/ 像這個(gè)網(wǎng)站上就有。

            # re: 深入理解計(jì)算機(jī)系統(tǒng)1_程序是如何運(yùn)行的  回復(fù)  更多評(píng)論   

            2008-07-14 12:19 by larryliuqing
            網(wǎng)上有啊!上次我看了這篇文章才到網(wǎng)上下的!

            # re: 深入理解計(jì)算機(jī)系統(tǒng)1_程序是如何運(yùn)行的  回復(fù)  更多評(píng)論   

            2009-02-26 09:32 by 戈多
            樓主有沒(méi)有這本書(shū)的家庭作業(yè)答案啊,我小菜一個(gè),很多題目做的是似是而非。

            # re: 深入理解計(jì)算機(jī)系統(tǒng)1_程序是如何運(yùn)行的  回復(fù)  更多評(píng)論   

            2009-10-06 01:33 by dads
            一般不看這樣的書(shū),細(xì)細(xì)松松的,還是把大學(xué)里的那些書(shū)看好吧,
            比如數(shù)字電路,計(jì)算機(jī)原理,編譯原理
            這些充分理解了再來(lái)看這篇文章,那簡(jiǎn)直是高屋建瓴;

            # re: 深入理解計(jì)算機(jī)系統(tǒng)1_程序是如何運(yùn)行的  回復(fù)  更多評(píng)論   

            2011-09-14 09:24 by 圖—圖—
            抄襲
            亚洲国产一成久久精品国产成人综合 | 天天影视色香欲综合久久| 91精品国产91久久久久久青草 | 乱亲女H秽乱长久久久| 人妻久久久一区二区三区| 欧美亚洲国产精品久久| 97超级碰碰碰久久久久| 久久久久亚洲?V成人无码| 亚洲精品午夜国产VA久久成人| 国产精品一区二区久久国产| 久久久无码精品午夜| 伊人久久大香线蕉综合Av| 国内精品久久久久久麻豆| av色综合久久天堂av色综合在 | 色综合久久精品中文字幕首页 | 久久精品国产精品亚洲艾草网美妙| 久久精品国产一区二区| 久久久久久久综合狠狠综合| 久久国产免费直播| 久久99精品国产99久久6| 亚洲国产精品综合久久网络| 久久亚洲精品成人无码网站| 国产福利电影一区二区三区久久老子无码午夜伦不 | 亚洲国产精品成人久久蜜臀| 一个色综合久久| 97久久天天综合色天天综合色hd| 国内精品久久久久久久亚洲| 国产精品久久久久蜜芽| 久久精品一本到99热免费| 久久精品国产亚洲AV不卡| 国产午夜福利精品久久2021| 9久久9久久精品| 久久午夜夜伦鲁鲁片免费无码影视 | 久久国产三级无码一区二区| 久久成人小视频| 99久久国产亚洲高清观看2024| 手机看片久久高清国产日韩| 久久99久久99精品免视看动漫| 无码8090精品久久一区| 久久99精品国产麻豆宅宅| 99久久777色|