?? freebsd 開發手冊.html
字號:
<dl><dt>第12章 <a href="#X86">x86 匯編語言</a></dt><dd><dl><dt>12.1 <a href="#X86-INTRO">概述</a></dt><dt>12.2 <a href="#X86-THE-TOOLS">工具</a></dt><dt>12.3 <a href="#X86-SYSTEM-CALLS">系統調用</a></dt><dt>12.4 <a href="#X86-RETURN-VALUES">返回值</a></dt><dt>12.5 <a href="#X86-PORTABLE-CODE">建立可移植的代碼</a></dt><dt>12.6 <a href="#X86-FIRST-PROGRAM">編寫第一個程序</a></dt><dt>12.7 <a href="#X86-UNIX-FILTERS">編寫 <span class="TRADEMARK">UNIX</span>®過濾程序</a></dt><dt>12.8 <a href="#X86-BUFFERED-IO">緩存 I/O</a></dt><dt>12.9 <a href="#X86-COMMAND-LINE">命令行參數</a></dt><dt>12.10 <a href="#X86-ENVIRONMENT"><span class="TRADEMARK">UNIX</span>中的環境</a></dt><dt>12.11 <a href="#X86-FILES">文件處理</a></dt><dt>12.12 <a href="#X86-ONE-POINTED-MIND">One-Pointed Mind</a></dt><dt>12.13 <a href="#X86-FPU">Using the <acronym class="ACRONYM">FPU</acronym></a></dt><dt>12.14 <a href="#X86-CAVEATS">忠告</a></dt><dt>12.15 <a href="#X86-ACKNOWLEDGEMENTS">致謝</a></dt></dl></dd></dl></dd><dt>第V部分. <a href="#APPENDICES">附錄</a></dt><dd><dl><dt><a href="#AEN6657">參考書目</a></dt></dl></dd><dt><a href="#DOC-INDEX">索引</a></dt></dl></div><div class="LOT"><dl class="LOT"><dt><b>范例清單</b></dt><dt>例2-1. <a href="#AEN1207">一個 <tt class="FILENAME">.emacs</tt>配置文件的例子</a></dt></dl></div><div class="PART"><a id="BASICS" name="BASICS"></a><div class="TITLEPAGE"><h1 class="TITLE">第I部分. 基礎</h1><div class="TOC"><dl><dt><b>目錄</b></dt><dt>第1章 <a href="#INTRODUCTION">介紹</a></dt><dt>第2章 <a href="#TOOLS">編程工具</a></dt><dt>第3章 <a href="#SECURE">安全的編程</a></dt><dt>第4章 <a href="#L10N">本地化與國際化 - L10N 和 I18N</a></dt><dt>第5章 <a href="#POLICIES">源代碼樹指南和維護發展策略</a></dt><dt>第6章 <a href="#TESTING">回歸與性能測試</a></dt></dl></div></div><div class="CHAPTER"><hr /><h1><a id="INTRODUCTION" name="INTRODUCTION"></a>第1章 介紹</h1><i class="AUTHORGROUP"><span class="CONTRIB">供稿:</span>Murray Stokely 和 JeroenRuigrok van der Werven.</i> <i class="AUTHORGROUP"><span class="CONTRIB">翻譯:</span>李鑫.</i> <div class="SECT1"><h2 class="SECT1"><a id="INTRODUCTION-DEVEL" name="INTRODUCTION-DEVEL">1.1 在 FreeBSD上進行開發</a></h2><p> 歡迎您的到來。 現在您已經安裝好操作系統, 并準備開始編程了。 但是, 從哪里開始呢?FreeBSD 提供了一些什么工具? 它能夠為我, 一個程序員提供什么呢?</p><p> 這些都是本章準備回答的問題。 當然, 與所有其他職業類似,人們對程序設計的熟練程度總是存在差異的。 對有些人而言, 它只是一種愛好;而對另一些人而言, 這則是他們的職業。 這一章中的內容主要是針對初學程序設計的人而撰寫;當然, 對于那些不熟悉 FreeBSD 平臺的程序員來說, 它也十分有用。</p></div><div class="SECT1"><hr /><h2 class="SECT1"><a id="INTRODUCTION-BSDVISION" name="INTRODUCTION-BSDVISION">1.2 BSD理念</a></h2><p> 對最初的軟件工具設計觀念以及可用性、 性能與穩定性給予應有的尊重, 并制作最佳的類<span class="TRADEMARK">UNIX</span>® 操作系統軟件包。</p></div><div class="SECT1"><hr /><h2 class="SECT1"><a id="INTRODUCTION-ARCHGUIDE" name="INTRODUCTION-ARCHGUIDE">1.3指導性架構設計原則</a></h2><p> 下面的指導性設計原則描述了我們的設計理念</p><ul><li><p>只要某一功能的缺失不會導致無法完成某個實際的應用程序, 就不新增該功能。</p></li><li><p>決定系統不做成什么樣子, 與決定將它做成什么樣子同樣重要。 不去滿足所有的需要,而是讓系統具備可擴展性, 使其能夠向上兼容。</p></li><li><p>盡可能抽象代碼中的通用部分, 除非沒有可以用來抽象的實例。</p></li><li><p>如果沒有完全理解一個問題, 最好干脆不提供任何解決方案。</p></li><li><p>如果能用 10% 的工作完成 90% 的工作, 則選擇較簡單的解決方案。</p></li><li><p>盡可能隔離復雜性。</p></li><li><p>提供機制而非策略。 具體而言, 將用戶界面策略交由客戶去選定。</p></li></ul><p> 摘自 Scheifler & Gettys: "X Window System"</p></div><div class="SECT1"><hr /><h2 class="SECT1"><a id="INTRODUCTION-LAYOUT" name="INTRODUCTION-LAYOUT">1.4 <ttclass="FILENAME">/usr/src</tt>的層次結構</a></h2><p> FreeBSD 的完整源代碼都可以從我們公開的 CVS 代碼庫中獲取。 源代碼通常會安裝到 <ttclass="FILENAME">/usr/src</tt> 目錄中, 它包括了下面這些目錄:</p><p> </p><div class="INFORMALTABLE"><a id="AEN114" name="AEN114"></a><table border="0" frame="void" width="100%" class="CALSTABLE"><col /><col /><thead><tr><th>目錄</th><th>說明</th></tr></thead><tbody><tr><td><tt class="FILENAME">bin/</tt></td><td>在 <tt class="FILENAME">/bin</tt> 中的文件的源代碼</td></tr><tr><td><tt class="FILENAME">contrib/</tt></td><td>由其他開發組織維護的源代碼</td></tr><tr><td><tt class="FILENAME">crypto/</tt></td><td>與密碼學有關的源代碼</td></tr><tr><td><tt class="FILENAME">etc/</tt></td><td>在 <tt class="FILENAME">/etc</tt> 中的文件的源代碼</td></tr><tr><td><tt class="FILENAME">games/</tt></td><td>在 <tt class="FILENAME">/usr/games</tt> 中的文件的源代碼</td></tr><tr><td><tt class="FILENAME">gnu/</tt></td><td>采用 GNU Public License 授權的工具</td></tr><tr><td><tt class="FILENAME">include/</tt></td><td>在 <tt class="FILENAME">/usr/include</tt> 中的文件的源代碼</td></tr><tr><td><tt class="FILENAME">kerberos5/</tt></td><td>第 5 版 Kerberos 的源代碼</td></tr><tr><td><tt class="FILENAME">lib/</tt></td><td>在 <tt class="FILENAME">/usr/lib</tt> 中的文件的源代碼</td></tr><tr><td><tt class="FILENAME">libexec/</tt></td><td>在 <tt class="FILENAME">/usr/libexec</tt> 中的文件的源代碼</td></tr><tr><td><tt class="FILENAME">release/</tt></td><td>用于制作 FreeBSD 發行版本的文件</td></tr><tr><td><tt class="FILENAME">rescue/</tt></td><td>建造系統時 <tt class="FILENAME">/rescue</tt>中的工具</td></tr><tr><td><tt class="FILENAME">sbin/</tt></td><td>在 <tt class="FILENAME">/sbin</tt> 中的文件的源代碼</td></tr><tr><td><tt class="FILENAME">secure/</tt></td><td>FreeSec 的源代碼</td></tr><tr><td><tt class="FILENAME">share/</tt></td><td>在 <tt class="FILENAME">/usr/share</tt> 中的文件的源代碼</td></tr><tr><td><tt class="FILENAME">sys/</tt></td><td>內核的源代碼文件</td></tr><tr><td><tt class="FILENAME">tools/</tt></td><td>用于維護和自動測試 FreeBSD 的工具</td></tr><tr><td><tt class="FILENAME">usr.bin/</tt></td><td>在 <tt class="FILENAME">/usr/bin</tt> 中的文件的源代碼</td></tr><tr><td><tt class="FILENAME">usr.sbin/</tt></td><td>在 <tt class="FILENAME">/usr/sbin</tt> 中的文件的源代碼</td></tr></tbody></table></div><br /><br /></div></div><div class="CHAPTER"><hr /><h1><a id="TOOLS" name="TOOLS"></a>第2章 編程工具</h1><i class="AUTHORGROUP"><span class="CONTRIB">供稿:</span>James Raynard 和 MurrayStokely.</i> <i class="AUTHORGROUP"><span class="CONTRIB">翻譯:</span>Jokhva.</i> <div class="SECT1"><h2 class="SECT1"><a id="TOOLS-SYNOPSIS" name="TOOLS-SYNOPSIS">2.1 概述</a></h2><p> 這一章介紹了 FreeBSD 提供的一些編程工具,很多這些工具在其他版本的 <spanclass="TRADEMARK">UNIX</span> 中都能使用。這里我們<span class="emphasis"><bclass="EMPHASIS">不會</b></span>嘗試描述任何編程細節。大多數章節假設您以前沒有或只有很少的編程知識,但我們希望程序員也能從中受益。</p></div><div class="SECT1"><hr /><h2 class="SECT1"><a id="TOOLS-INTRO" name="TOOLS-INTRO">2.2 介紹</a></h2><p> FreeBSD 提供了一個非常優秀的開發環境。 它的基本系統中自帶了 C 和 C++編譯器以及匯編器, 以及包括 <tt class="COMMAND">sed</tt> 和 <tt class="COMMAND">awk</tt>等在內的很多經典 <span class="TRADEMARK">UNIX</span> 工具。 如果還不夠, Ports套件中還有更多可用的編譯器和解釋器。 在下一節, <ahref="#TOOLS-PROGRAMMING">程序設計入門</a> 中, 列出了一些可用的語言。 FreeBSD與多種標準兼容, 比如 <acronym class="ACRONYM"><spanclass="TRADEMARK">POSIX</span>®</acronym> 和 <acronym class="ACRONYM">ANSI</acronym>C, 當然還有它自己的 BSD 傳統。 因此, 我們在 FreeBSD平臺上寫的應用不加修改或稍加修改就能在很多平臺上運行。</p><p> 如果你從未在 <span class="TRADEMARK">UNIX</span>平臺上寫過程序,所有這些強大之處看起來會讓人炫目。這篇文檔的目的就是幫助你迅速上手,而不許要深入更多高級論題。我們的目的就是讓這篇文檔給你提供足夠的基礎知識來理解我們的文檔。</p><p> 這篇文檔不要求你有編程知識,或者你只有很少的編程知識。當然,我們假定你 會使用<span class="TRADEMARK">UNIX</span> 并且愿意來學。</p></div><div class="SECT1"><hr /><h2 class="SECT1"><a id="TOOLS-PROGRAMMING" name="TOOLS-PROGRAMMING">2.3編程初步</a></h2><p> 程序就是一系列指令的集合,這些指令能驅使計算機去做不同的事情。有時候計算機執行的一個指令取決于它所執行的前一個指令。本章將介紹兩種主要的給出指令, 也叫“命令”,的方式。一種方式是使用 <i class="FIRSTTERM">解釋器</i> ,另一種方式是使用 <iclass="FIRSTTERM">編譯器</i>。人類語言對于計算機來說語義模糊太難于理解,因此計算機命令都用為了特定目的設計的的一種或其他種計算機語言寫的。</p><div class="SECT2"><hr /><h3 class="SECT2"><a id="AEN248" name="AEN248">2.3.1 解釋器</a></h3><p> 使用解釋器的計算機語言就像一個環境。解釋器給出提示符后,你輸入一個命令,解釋器就會執行這個命令。對于更復雜的程序,可以把命令寫入一個文件然后讓解釋器裝入這個文件再執行其中的命令。如果有錯誤發生,許多解釋器會進入一個調試環境讓你來追蹤問題。</p>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -