📄 1.4.1b.htm
字号:
<html>
<head>
<title>编译原理</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link type="text/css" rel="stylesheet" href="../css/specification.css">
</head>
<BODY>
<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='1.4.1.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='1.5.htm'"></img></td>
</tr>
</table>
<br><br>
<p><font class="emphasize">装配器和连接编辑器 </font> </p>
<p>通常,装配器完成装入和连接编辑两个功能。装入过程包括读入可重定位机器代码,修改重定位地址,把修改后的指令和数据放在内存的适当地方或形成可执行文件。 </p>
<p>连接编辑器允许把几个可重定位的代码文件组装成一个程序,这些文件可以是分几次编译得到的,其中的一个或几个可能是库文件。库文件是由系统提供的,对任何需要它们的程序都是可用的子程序组成。 </p>
<p>如果这些文件是以有用的方式组合在一起,那么就可能出现一些外部引用,即一个文件中的代码引用另一文件中的存储单元。这种引用可以是定义在一个文件中而使用在另一个文件的数据单元,或者是入口点出现在一个文件的代码中而调用出现在另一文件代码中的过程。可重定位的机器代码文件必须把每个外部引用的数据单元或指令标号的信息保持在符号表中。由于事先不知道哪些将被引用,所以,事实上,必须把汇编器的整个符号表作为可重定位代码的一部分。</p>
<p>例如,(1.2)的代码可能有图1.10的符号表作为前导。如果和(1.2)一起装配的文件引用b,那么这个引用(1.2)的文件重定位时,它的数据单元的地址偏移必须加上4来。
</p>
</td>
</tr></table>
<br>
<table align=right width=300>
<tr>
<td><img src="../images/previous.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='1.4.1.htm'"></img></td>
<td><img src="../images/next.gif" onmouseover="javascript:style.cursor='hand'" onclick="vbscript:window.location.href='1.5.htm'"></img></td>
</tr>
</table>
</BODY>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -