24.html

来自「linux 0.11中文版 有注释」· HTML 代码 · 共 140 行

HTML
140
字号
<html>
<head>
<title>include/asm/segment.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 href='../files/100.html'>asm</a>/segment.h</h2>
<i><font color='green'>/* [&lt;][&gt;]<a href='#L6'>[^]</a><a href='#L103'>[v]</a>[top]<a href='#BOTTOM'>[bottom]</a><a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</font></i>
<hr>
<h2><a href='../J/24.html' title='Multiple included from 22 places.'>INCLUDED FROM</a></h2>
<hr>
<h2>DEFINITIONS</h2>
This source file includes following definitions.
<ol>
<li><a href='#L6' title='Defined at 6.'>get_fs_byte</a>
<li><a href='#L19' title='Defined at 19.'>get_fs_word</a>
<li><a href='#L32' title='Defined at 32.'>get_fs_long</a>
<li><a href='#L44' title='Defined at 44.'>put_fs_byte</a>
<li><a href='#L53' title='Defined at 53.'>put_fs_word</a>
<li><a href='#L62' title='Defined at 62.'>put_fs_long</a>
<li><a href='#L83' title='Defined at 83.'>get_fs</a>
<li><a href='#L93' title='Defined at 93.'>get_ds</a>
<li><a href='#L103' title='Defined at 103.'>set_fs</a>
</ol>
<hr>
<pre>
<a name='L1'><i><font color='green'>//// 读取fs 段中指定地址处的字节。</font></i>
<a name='L2'><i><font color='green'>// 参数:addr - 指定的内存地址。</font></i>
<a name='L3'><i><font color='green'>// %0 - (返回的字节_v);%1 - (内存地址addr)。</font></i>
<a name='L4'><i><font color='green'>// 返回:返回内存fs:[addr]处的字节。</font></i>
<a name='L5'><b>extern</b> <b>inline</b> <b>unsigned</b> <b>char</b>
<a name='L6'><a href='../R/479.html' title='Multiple refered from 19 places.'>get_fs_byte</a> (<b>const</b> <b>char</b> *addr)
<a name='L7'><font color='red'>{</font>
<a name='L8'>  <b>unsigned</b> <b>register</b> <b>char</b> _v;
<a name='L9'>
<a name='L10'><b>__asm__</b> ("movb %%fs:%1,%0": "=r" (_v):"m" (*addr));
<a name='L11'>  <b>return</b> _v;
<a name='L12'><font color='red'>}</font>
<a name='L13'>
<a name='L14'><i><font color='green'>//// 读取fs 段中指定地址处的字。</font></i>
<a name='L15'><i><font color='green'>// 参数:addr - 指定的内存地址。</font></i>
<a name='L16'><i><font color='green'>// %0 - (返回的字_v);%1 - (内存地址addr)。</font></i>
<a name='L17'><i><font color='green'>// 返回:返回内存fs:[addr]处的字。</font></i>
<a name='L18'><b>extern</b> <b>inline</b> <b>unsigned</b> <b>short</b>
<a name='L19'>get_fs_word (<b>const</b> <b>unsigned</b> <b>short</b> *addr)
<a name='L20'><font color='red'>{</font>
<a name='L21'>  <b>unsigned</b> <b>short</b> _v;
<a name='L22'>
<a name='L23'><b>__asm__</b> ("movw %%fs:%1,%0": "=r" (_v):"m" (*addr));
<a name='L24'>  <b>return</b> _v;
<a name='L25'><font color='red'>}</font>
<a name='L26'>
<a name='L27'><i><font color='green'>//// 读取fs 段中指定地址处的长字(4 字节)。</font></i>
<a name='L28'><i><font color='green'>// 参数:addr - 指定的内存地址。</font></i>
<a name='L29'><i><font color='green'>// %0 - (返回的长字_v);%1 - (内存地址addr)。</font></i>
<a name='L30'><i><font color='green'>// 返回:返回内存fs:[addr]处的长字。</font></i>
<a name='L31'><b>extern</b> <b>inline</b> <b>unsigned</b> <b>long</b>
<a name='L32'><a href='../R/480.html' title='Multiple refered from 6 places.'>get_fs_long</a> (<b>const</b> <b>unsigned</b> <b>long</b> *addr)
<a name='L33'><font color='red'>{</font>
<a name='L34'>  <b>unsigned</b> <b>long</b> _v;
<a name='L35'>
<a name='L36'><b>__asm__</b> ("movl %%fs:%1,%0": "=r" (_v):"m" (*addr));
<a name='L37'>  <b>return</b> _v;
<a name='L38'><font color='red'>}</font>
<a name='L39'>
<a name='L40'><i><font color='green'>//// 将一字节存放在fs 段中指定内存地址处。</font></i>
<a name='L41'><i><font color='green'>// 参数:val - 字节值;addr - 内存地址。</font></i>
<a name='L42'><i><font color='green'>// %0 - 寄存器(字节值val);%1 - (内存地址addr)。</font></i>
<a name='L43'><b>extern</b> <b>inline</b> <b>void</b>
<a name='L44'><a href='../R/556.html' title='Multiple refered from 11 places.'>put_fs_byte</a> (<b>char</b> val, <b>char</b> *addr)
<a name='L45'><font color='red'>{</font>
<a name='L46'>  <b>__asm__</b> ("movb %0,%%fs:%1"::"r" (val), "m" (*addr));
<a name='L47'><font color='red'>}</font>
<a name='L48'>
<a name='L49'><i><font color='green'>//// 将一字存放在fs 段中指定内存地址处。</font></i>
<a name='L50'><i><font color='green'>// 参数:val - 字值;addr - 内存地址。</font></i>
<a name='L51'><i><font color='green'>// %0 - 寄存器(字值val);%1 - (内存地址addr)。</font></i>
<a name='L52'><b>extern</b> <b>inline</b> <b>void</b>
<a name='L53'>put_fs_word (<b>short</b> val, <b>short</b> *addr)
<a name='L54'><font color='red'>{</font>
<a name='L55'>  <b>__asm__</b> ("movw %0,%%fs:%1"::"r" (val), "m" (*addr));
<a name='L56'><font color='red'>}</font>
<a name='L57'>
<a name='L58'><i><font color='green'>//// 将一长字存放在fs 段中指定内存地址处。</font></i>
<a name='L59'><i><font color='green'>// 参数:val - 长字值;addr - 内存地址。</font></i>
<a name='L60'><i><font color='green'>// %0 - 寄存器(长字值val);%1 - (内存地址addr)。</font></i>
<a name='L61'><b>extern</b> <b>inline</b> <b>void</b>
<a name='L62'><a href='../R/557.html' title='Multiple refered from 27 places.'>put_fs_long</a> (<b>unsigned</b> <b>long</b> val, <b>unsigned</b> <b>long</b> *addr)
<a name='L63'><font color='red'>{</font>
<a name='L64'>  <b>__asm__</b> ("movl %0,%%fs:%1"::"r" (val), "m" (*addr));
<a name='L65'><font color='red'>}</font>
<a name='L66'>
<a name='L67'><i><font color='green'>/*</font></i>
<a name='L68'><i><font color='green'>* Someone who knows GNU asm better than I should double check the followig.</font></i>
<a name='L69'><i><font color='green'>* It seems to work, but I don't know if I'm doing something subtly wrong.</font></i>
<a name='L70'><i><font color='green'>* --- TYT, 11/24/91</font></i>
<a name='L71'><i><font color='green'>* [ nothing wrong here, Linus ]</font></i>
<a name='L72'><i><font color='green'>*/</font></i>
<a name='L73'><i><font color='green'>/*</font></i>
<a name='L74'><i><font color='green'>* 比我更懂GNU 汇编的人应该仔细检查下面的代码。这些代码能使用,但我不知道是否</font></i>
<a name='L75'><i><font color='green'>* 含有一些小错误。</font></i>
<a name='L76'><i><font color='green'>* --- TYT,1991 年11 月24 日</font></i>
<a name='L77'><i><font color='green'>* [ 这些代码没有错误,Linus ]</font></i>
<a name='L78'><i><font color='green'>*/</font></i>
<a name='L79'>
<a name='L80'><i><font color='green'>//// 取fs 段寄存器值(选择符)。</font></i>
<a name='L81'><i><font color='green'>// 返回:fs 段寄存器值。</font></i>
<a name='L82'><b>extern</b> <b>inline</b> <b>unsigned</b> <b>long</b>
<a name='L83'><a href='../R/478.html' title='Multiple refered from 2 places.'>get_fs</a> ()
<a name='L84'><font color='red'>{</font>
<a name='L85'>  <b>unsigned</b> <b>short</b> _v;
<a name='L86'><b>__asm__</b> ("mov %%fs,%%ax": "=a" (_v):);
<a name='L87'>  <b>return</b> _v;
<a name='L88'><font color='red'>}</font>
<a name='L89'>
<a name='L90'><i><font color='green'>//// 取ds 段寄存器值。</font></i>
<a name='L91'><i><font color='green'>// 返回:ds 段寄存器值。</font></i>
<a name='L92'><b>extern</b> <b>inline</b> <b>unsigned</b> <b>long</b>
<a name='L93'><a href='../R/474.html' title='Multiple refered from 2 places.'>get_ds</a> ()
<a name='L94'><font color='red'>{</font>
<a name='L95'>  <b>unsigned</b> <b>short</b> _v;
<a name='L96'><b>__asm__</b> ("mov %%ds,%%ax": "=a" (_v):);
<a name='L97'>  <b>return</b> _v;
<a name='L98'><font color='red'>}</font>
<a name='L99'>
<a name='L100'><i><font color='green'>//// 设置fs 段寄存器。</font></i>
<a name='L101'><i><font color='green'>// 参数:val - 段值(选择符)。</font></i>
<a name='L102'><b>extern</b> <b>inline</b> <b>void</b>
<a name='L103'><a href='../R/595.html' title='Multiple refered from 10 places.'>set_fs</a> (<b>unsigned</b> <b>long</b> val)
<a name='L104'><font color='red'>{</font>
<a name='L105'>  <b>__asm__</b> ("mov %0,%%fs"::"a" ((<b>unsigned</b> <b>short</b>) val));
<a name='L106'><font color='red'>}</font>
</pre>
<hr>
<a name='BOTTOM'>
<i><font color='green'>/* [&lt;][&gt;]<a href='#L6'>[^]</a><a href='#L103'>[v]</a><a href='#TOP'>[top]</a>[bottom]<a href='../mains.html'>[index]</a><a href='../help.html'>[help]</a> */</font></i>
</body>
</html>

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?