21.html
来自「linux 0.11中文版 有注释」· HTML 代码 · 共 311 行 · 第 1/2 页
HTML
311 行
<html>
<head>
<title>include/a.out.h</title>
<meta name='robots' content='noindex,nofollow'>
<meta name='generator' content='GLOBAL-5.4.1'>
</head>
<body text='#191970' bgcolor='#f5f5dc' vlink='gray'>
<a name='TOP'><h2><a href='../mains.html'>root</a>/<a href='../files/99.html'>include</a>/a.out.h</h2>
<i><font color='green'>/* [<][>][^][v][top]<a href='#BOTTOM'>[bottom]</a><a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</font></i>
<hr>
<h2><a href='8.html#L34' title='Included from 34 in fs/exec.c.'>INCLUDED FROM</a></h2>
<hr>
<pre>
<a name='L1'><font color='darkred'>#ifndef</font> <a href='../S/21.html#L2' title='Defined at 2 in include/a.out.h.'>_A_OUT_H</a>
<a name='L2'><font color='darkred'>#define</font> <a href='../S/21.html#L1' title='Refered from 1 in include/a.out.h.'>_A_OUT_H</a>
<a name='L3'>
<a name='L4'><font color='darkred'>#define</font> __GNU_EXEC_MACROS__
<a name='L5'>
<a name='L6'><i><font color='green'>// 执行文件结构。</font></i>
<a name='L7'><i><font color='green'>// =============================</font></i>
<a name='L8'><i><font color='green'>// unsigned long a_magic // 执行文件魔数。使用N_MAGIC 等宏访问。</font></i>
<a name='L9'><i><font color='green'>// unsigned a_text // 代码长度,字节数。</font></i>
<a name='L10'><i><font color='green'>// unsigned a_data // 数据长度,字节数。</font></i>
<a name='L11'><i><font color='green'>// unsigned a_bss // 文件中的未初始化数据区长度,字节数。</font></i>
<a name='L12'><i><font color='green'>// unsigned a_syms // 文件中的符号表长度,字节数。</font></i>
<a name='L13'><i><font color='green'>// unsigned a_entry // 执行开始地址。</font></i>
<a name='L14'><i><font color='green'>// unsigned a_trsize // 代码重定位信息长度,字节数。</font></i>
<a name='L15'><i><font color='green'>// unsigned a_drsize // 数据重定位信息长度,字节数。</font></i>
<a name='L16'><i><font color='green'>// -----------------------------</font></i>
<a name='L17'><b>struct</b> exec
<a name='L18'><font color='red'>{</font>
<a name='L19'> <b>unsigned</b> <b>long</b> a_magic; <i><font color='green'>/* Use macros N_MAGIC, etc for access */</font></i>
<a name='L20'> <b>unsigned</b> a_text; <i><font color='green'>/* length of text, in bytes */</font></i>
<a name='L21'> <b>unsigned</b> a_data; <i><font color='green'>/* length of data, in bytes */</font></i>
<a name='L22'> <b>unsigned</b> a_bss; <i><font color='green'>/* length of uninitialized data area for file, in bytes */</font></i>
<a name='L23'> <b>unsigned</b> a_syms; <i><font color='green'>/* length of symbol table data in file, in bytes */</font></i>
<a name='L24'> <b>unsigned</b> a_entry; <i><font color='green'>/* start address */</font></i>
<a name='L25'> <b>unsigned</b> a_trsize; <i><font color='green'>/* length of relocation info for text, in bytes */</font></i>
<a name='L26'> <b>unsigned</b> a_drsize; <i><font color='green'>/* length of relocation info for data, in bytes */</font></i>
<a name='L27'><font color='red'>}</font>;
<a name='L28'>
<a name='L29'><i><font color='green'>// 用于取执行结构中的魔数。</font></i>
<a name='L30'><font color='darkred'>#ifndef</font> <a href='../S/21.html#L31' title='Defined at 31 in include/a.out.h.'>N_MAGIC</a>
<a name='L31'><font color='darkred'>#define</font> <a href='../R/161.html' title='Multiple refered from 8 places.'>N_MAGIC</a>(exec) ((exec).a_magic)
<a name='L32'><font color='darkred'>#endif</font>
<a name='L33'>
<a name='L34'><font color='darkred'>#ifndef</font> <a href='../S/21.html#L37' title='Defined at 37 in include/a.out.h.'>OMAGIC</a>
<a name='L35'><i><font color='green'>/* Code indicating object file or impure executable. */</font></i>
<a name='L36'><i><font color='green'>/* 指明为目标文件或者不纯的可执行文件的代号 */</font></i>
<a name='L37'><font color='darkred'>#define</font> <a href='../R/173.html' title='Multiple refered from 4 places.'>OMAGIC</a> 0407
<a name='L38'><i><font color='green'>/* Code indicating pure executable. */</font></i>
<a name='L39'><i><font color='green'>/* 指明为纯可执行文件的代号 */</font></i>
<a name='L40'><font color='darkred'>#define</font> <a href='../R/136.html' title='Multiple refered from 2 places.'>NMAGIC</a> 0410
<a name='L41'><i><font color='green'>/* Code indicating demand-paged executable. */</font></i>
<a name='L42'><i><font color='green'>/* 指明为需求分页处理的可执行文件 */</font></i>
<a name='L43'><font color='darkred'>#define</font> <a href='../R/316.html' title='Multiple refered from 4 places.'>ZMAGIC</a> 0413
<a name='L44'><font color='darkred'>#endif</font> <i><font color='green'>/* not OMAGIC */</font></i>
<a name='L45'>
<a name='L46'><i><font color='green'>// 如果魔数不能被识别,则返回真。</font></i>
<a name='L47'><font color='darkred'>#ifndef</font> <a href='../S/21.html#L48' title='Defined at 48 in include/a.out.h.'>N_BADMAG</a>
<a name='L48'><font color='darkred'>#define</font> <a href='../S/21.html#L47' title='Refered from 47 in include/a.out.h.'>N_BADMAG</a>(x) \
<a name='L49'>(<a href='../S/21.html#L31' title='Defined at 31 in include/a.out.h.'>N_MAGIC</a>(x) != <a href='../S/21.html#L37' title='Defined at 37 in include/a.out.h.'>OMAGIC</a> && <a href='../S/21.html#L31' title='Defined at 31 in include/a.out.h.'>N_MAGIC</a>(x) != <a href='../S/21.html#L40' title='Defined at 40 in include/a.out.h.'>NMAGIC</a> \
<a name='L50'>&& <a href='../S/21.html#L31' title='Defined at 31 in include/a.out.h.'>N_MAGIC</a>(x) != <a href='../S/21.html#L43' title='Defined at 43 in include/a.out.h.'>ZMAGIC</a>)
<a name='L51'><font color='darkred'>#endif</font>
<a name='L52'>
<a name='L53'><font color='darkred'>#define</font> _N_BADMAG(x) \
<a name='L54'>(<a href='../S/21.html#L31' title='Defined at 31 in include/a.out.h.'>N_MAGIC</a>(x) != <a href='../S/21.html#L37' title='Defined at 37 in include/a.out.h.'>OMAGIC</a> && <a href='../S/21.html#L31' title='Defined at 31 in include/a.out.h.'>N_MAGIC</a>(x) != <a href='../S/21.html#L40' title='Defined at 40 in include/a.out.h.'>NMAGIC</a> \
<a name='L55'>&& <a href='../S/21.html#L31' title='Defined at 31 in include/a.out.h.'>N_MAGIC</a>(x) != <a href='../S/21.html#L43' title='Defined at 43 in include/a.out.h.'>ZMAGIC</a>)
<a name='L56'>
<a name='L57'><i><font color='green'>// 程序头在内存中的偏移位置。</font></i>
<a name='L58'><font color='darkred'>#define</font> <a href='../S/21.html#L63' title='Refered from 63 in include/a.out.h.'>_N_HDROFF</a>(x) (<a href='../D/353.html' title='Multiple defined in 5 places.'>SEGMENT_SIZE</a> - <b>sizeof</b> (<b>struct</b> exec))
<a name='L59'>
<a name='L60'><i><font color='green'>// 代码起始偏移值。</font></i>
<a name='L61'><font color='darkred'>#ifndef</font> <a href='../S/21.html#L62' title='Defined at 62 in include/a.out.h.'>N_TXTOFF</a>
<a name='L62'><font color='darkred'>#define</font> <a href='../R/168.html' title='Multiple refered from 4 places.'>N_TXTOFF</a>(x) \
<a name='L63'>(<a href='../S/21.html#L31' title='Defined at 31 in include/a.out.h.'>N_MAGIC</a>(x) == <a href='../S/21.html#L43' title='Defined at 43 in include/a.out.h.'>ZMAGIC</a> ? <a href='../S/21.html#L58' title='Defined at 58 in include/a.out.h.'>_N_HDROFF</a>((x)) + <b>sizeof</b> (<b>struct</b> exec) : <b>sizeof</b> (<b>struct</b> exec))
<a name='L64'><font color='darkred'>#endif</font>
<a name='L65'>
<a name='L66'><i><font color='green'>// 数据起始偏移值。</font></i>
<a name='L67'><font color='darkred'>#ifndef</font> <a href='../S/21.html#L68' title='Defined at 68 in include/a.out.h.'>N_DATOFF</a>
<a name='L68'><font color='darkred'>#define</font> <a href='../R/157.html' title='Multiple refered from 2 places.'>N_DATOFF</a>(x) (<a href='../S/21.html#L62' title='Defined at 62 in include/a.out.h.'>N_TXTOFF</a>(x) + (x).a_text)
<a name='L69'><font color='darkred'>#endif</font>
<a name='L70'>
<a name='L71'><i><font color='green'>// 代码重定位信息偏移值。</font></i>
<a name='L72'><font color='darkred'>#ifndef</font> <a href='../S/21.html#L73' title='Defined at 73 in include/a.out.h.'>N_TRELOFF</a>
<a name='L73'><font color='darkred'>#define</font> <a href='../R/166.html' title='Multiple refered from 2 places.'>N_TRELOFF</a>(x) (<a href='../S/21.html#L68' title='Defined at 68 in include/a.out.h.'>N_DATOFF</a>(x) + (x).a_data)
<a name='L74'><font color='darkred'>#endif</font>
<a name='L75'>
<a name='L76'><i><font color='green'>// 数据重定位信息偏移值。</font></i>
<a name='L77'><font color='darkred'>#ifndef</font> <a href='../S/21.html#L78' title='Defined at 78 in include/a.out.h.'>N_DRELOFF</a>
<a name='L78'><font color='darkred'>#define</font> <a href='../R/158.html' title='Multiple refered from 2 places.'>N_DRELOFF</a>(x) (<a href='../S/21.html#L73' title='Defined at 73 in include/a.out.h.'>N_TRELOFF</a>(x) + (x).a_trsize)
<a name='L79'><font color='darkred'>#endif</font>
<a name='L80'>
<a name='L81'><i><font color='green'>// 符号表偏移值。</font></i>
<a name='L82'><font color='darkred'>#ifndef</font> <a href='../S/21.html#L83' title='Defined at 83 in include/a.out.h.'>N_SYMOFF</a>
<a name='L83'><font color='darkred'>#define</font> <a href='../R/164.html' title='Multiple refered from 2 places.'>N_SYMOFF</a>(x) (<a href='../S/21.html#L78' title='Defined at 78 in include/a.out.h.'>N_DRELOFF</a>(x) + (x).a_drsize)
<a name='L84'><font color='darkred'>#endif</font>
<a name='L85'>
<a name='L86'><i><font color='green'>// 字符串信息偏移值。</font></i>
<a name='L87'><font color='darkred'>#ifndef</font> <a href='../S/21.html#L88' title='Defined at 88 in include/a.out.h.'>N_STROFF</a>
<a name='L88'><font color='darkred'>#define</font> <a href='../S/21.html#L87' title='Refered from 87 in include/a.out.h.'>N_STROFF</a>(x) (<a href='../S/21.html#L83' title='Defined at 83 in include/a.out.h.'>N_SYMOFF</a>(x) + (x).a_syms)
<a name='L89'><font color='darkred'>#endif</font>
<a name='L90'>
<a name='L91'><i><font color='green'>/* Address of text segment in memory after it is loaded. */</font></i>
<a name='L92'><i><font color='green'>/* 代码段加载到内存中后的地址 */</font></i>
<a name='L93'><font color='darkred'>#ifndef</font> <a href='../S/21.html#L94' title='Defined at 94 in include/a.out.h.'>N_TXTADDR</a>
<a name='L94'><font color='darkred'>#define</font> <a href='../R/167.html' title='Multiple refered from 2 places.'>N_TXTADDR</a>(x) 0
<a name='L95'><font color='darkred'>#endif</font>
<a name='L96'>
<a name='L97'><i><font color='green'>/* Address of data segment in memory after it is loaded.</font></i>
<a name='L98'><i><font color='green'>Note that it is up to you to define SEGMENT_SIZE</font></i>
<a name='L99'><i><font color='green'>on machines not listed here. */</font></i>
<a name='L100'><i><font color='green'>/* 数据段加载到内存中后的地址。</font></i>
<a name='L101'><i><font color='green'>注意,对于下面没有列出名称的机器,需要你自己来定义</font></i>
<a name='L102'><i><font color='green'>对应的SEGMENT_SIZE */</font></i>
<a name='L103'><font color='darkred'>#if</font> <b>defined</b>(vax) || <b>defined</b>(hp300) || <b>defined</b>(pyr)
<a name='L104'><font color='darkred'>#define</font> <a href='../R/216.html' title='Multiple refered from 2 places.'>SEGMENT_SIZE</a> <a href='../D/324.html' title='Multiple defined in 4 places.'>PAGE_SIZE</a>
<a name='L105'><font color='darkred'>#endif</font>
<a name='L106'><font color='darkred'>#ifdef</font> hp300
<a name='L107'><font color='darkred'>#define</font> <a href='../R/198.html' title='Multiple refered from 24 places.'>PAGE_SIZE</a> 4096
<a name='L108'><font color='darkred'>#endif</font>
<a name='L109'><font color='darkred'>#ifdef</font> sony
<a name='L110'><font color='darkred'>#define</font> <a href='../R/216.html' title='Multiple refered from 2 places.'>SEGMENT_SIZE</a> 0x2000
<a name='L111'><font color='darkred'>#endif</font> <i><font color='green'>/* Sony. */</font></i>
<a name='L112'><font color='darkred'>#ifdef</font> is68k
<a name='L113'><font color='darkred'>#define</font> <a href='../R/216.html' title='Multiple refered from 2 places.'>SEGMENT_SIZE</a> 0x20000
<a name='L114'><font color='darkred'>#endif</font>
<a name='L115'><font color='darkred'>#if</font> <b>defined</b>(m68k) && <b>defined</b>(PORTAR)
<a name='L116'><font color='darkred'>#define</font> <a href='../R/198.html' title='Multiple refered from 24 places.'>PAGE_SIZE</a> 0x400
<a name='L117'><font color='darkred'>#define</font> <a href='../R/216.html' title='Multiple refered from 2 places.'>SEGMENT_SIZE</a> <a href='../D/324.html' title='Multiple defined in 4 places.'>PAGE_SIZE</a>
<a name='L118'><font color='darkred'>#endif</font>
<a name='L119'>
<a name='L120'><font color='darkred'>#define</font> <a href='../R/198.html' title='Multiple refered from 24 places.'>PAGE_SIZE</a> 4096
<a name='L121'><font color='darkred'>#define</font> <a href='../R/216.html' title='Multiple refered from 2 places.'>SEGMENT_SIZE</a> 1024
<a name='L122'>
<a name='L123'><i><font color='green'>// 以段为界的大小。</font></i>
<a name='L124'><font color='darkred'>#define</font> <a href='../S/21.html#L133' title='Refered from 133 in include/a.out.h.'>_N_SEGMENT_ROUND</a>(x) (((x) + <a href='../D/353.html' title='Multiple defined in 5 places.'>SEGMENT_SIZE</a> - 1) & ~(<a href='../D/353.html' title='Multiple defined in 5 places.'>SEGMENT_SIZE</a> - 1))
<a name='L125'>
<a name='L126'><i><font color='green'>// 代码段尾地址。</font></i>
<a name='L127'><font color='darkred'>#define</font> <a href='../R/339.html' title='Multiple refered from 2 places.'>_N_TXTENDADDR</a>(x) (<a href='../S/21.html#L94' title='Defined at 94 in include/a.out.h.'>N_TXTADDR</a>(x)+(x).a_text)
<a name='L128'>
<a name='L129'><i><font color='green'>// 数据开始地址。</font></i>
<a name='L130'><font color='darkred'>#ifndef</font> <a href='../S/21.html#L131' title='Defined at 131 in include/a.out.h.'>N_DATADDR</a>
<a name='L131'><font color='darkred'>#define</font> <a href='../R/156.html' title='Multiple refered from 2 places.'>N_DATADDR</a>(x) \
<a name='L132'>(<a href='../S/21.html#L31' title='Defined at 31 in include/a.out.h.'>N_MAGIC</a>(x)==<a href='../S/21.html#L37' title='Defined at 37 in include/a.out.h.'>OMAGIC</a>? (<a href='../S/21.html#L127' title='Defined at 127 in include/a.out.h.'>_N_TXTENDADDR</a>(x)) \
<a name='L133'>: (<a href='../S/21.html#L124' title='Defined at 124 in include/a.out.h.'>_N_SEGMENT_ROUND</a> (<a href='../S/21.html#L127' title='Defined at 127 in include/a.out.h.'>_N_TXTENDADDR</a>(x))))
<a name='L134'><font color='darkred'>#endif</font>
<a name='L135'>
<a name='L136'><i><font color='green'>/* Address of bss segment in memory after it is loaded. */</font></i>
<a name='L137'><i><font color='green'>/* bss 段加载到内存以后的地址 */</font></i>
<a name='L138'><font color='darkred'>#ifndef</font> <a href='../S/21.html#L139' title='Defined at 139 in include/a.out.h.'>N_BSSADDR</a>
<a name='L139'><font color='darkred'>#define</font> <a href='../S/21.html#L138' title='Refered from 138 in include/a.out.h.'>N_BSSADDR</a>(x) (<a href='../S/21.html#L131' title='Defined at 131 in include/a.out.h.'>N_DATADDR</a>(x) + (x).a_data)
<a name='L140'><font color='darkred'>#endif</font>
<a name='L141'>
<a name='L142'><i><font color='green'>// nlist 结构。</font></i>
<a name='L143'><font color='darkred'>#ifndef</font> N_NLIST_DECLARED
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?