📄 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 + -