⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00585.html

📁 这是一本关于verilog编程语言的教程,对学习verilog语言有帮助
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<span style="color: #0000FF">endcase</span></pre></div></div>
<p class="Element10">
如果<i>instr</i>保存了一个<i>Add</i>指令,那么第一个模式形成匹配,标识符<i>r1</i>、<i>r2</i>和<i>rd</i>被绑定到嵌套结构体值得三个寄存器域。右侧的语句对寄存器文件rf执行这个指令。如果标签为<i>Jmp</i>,我们不可能访问这些寄存器域。如果<i>instr</i>保存了一个<i>Jmp</i>指令,那么第二个模式形成匹配,并且标识符<i>j</i>被绑定到嵌套的标签联合体值。内层的case语句轮流地将这个值与<i>JmpU</i>和<i>JmpC</i>模式进行匹配,依次类推。&nbsp;</p>
<p class="Element10">
&nbsp;</p>
<p class="Element10">
下面的例子与前一个例子相同,但使用通佩符和常量模式来排除<i>rd=0</i>的情况(在某些处理器中,寄存器0是一个特殊的“丢弃”寄存器): </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00270');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00270"><pre class="Element12"><span style="color: #0000FF">case</span> <span style="color: #800080">(</span>instr<span style="color: #800080">)</span> <span style="color: #0000FF">matches</span>
    <span style="color: #0000FF">tagged</span> Add <span style="color: #800080">{.*,.*, .0} : ;</span>   <span style="color: #008000">// 无操作</span>
    <span style="color: #0000FF">tagged</span> Add <span style="color: #800080">{</span>r1<span style="color: #800080">,</span>r2<span style="color: #800080">,</span>rd<span style="color: #800080">} :</span> rf<span style="color: #800080">[</span>rd<span style="color: #800080">] = </span>rf<span style="color: #800080">[</span>r1<span style="color: #800080">] +</span> rf<span style="color: #800080">[</span>r2<span style="color: #800080">];</span>
    <span style="color: #0000FF">tagged</span> Jmp j <span style="color: #800080">:</span> <span style="color: #0000FF">case</span> <span style="color: #800080">(</span>j<span style="color: #800080">)</span> <span style="color: #0000FF">matches</span>
                       <span style="color: #0000FF">tagged</span> JmpU a <span style="color: #800080">:</span> pc <span style="color: #800080">=</span> pc <span style="color: #800080">+</span> a<span style="color: #800080">;</span>
                       <span style="color: #0000FF">tagged</span> JmpC <span style="color: #800080">{</span>c<span style="color: #800080">,</span>a<span style="color: #800080">}:</span> <span style="color: #0000FF">if</span> <span style="color: #800080">(</span>rf<span style="color: #800080">[</span>c<span style="color: #800080">])</span> pc <span style="color: #800080">=</span> a<span style="color: #800080">;</span>
                   <span style="color: #0000FF">endcase</span>
<span style="color: #0000FF">endcase</span></pre></div></div>
<p class="Element10">
下面的例子与前一个例子相同,但第一个内层case语句仅包含结构体和常量,但不包括标签联合体: </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00271');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00271"><pre class="Element12"><span style="color: #0000FF">case</span> <span style="color: #800080">(</span>instr<span style="color: #800080">)</span> <span style="color: #0000FF">matches</span>
    <span style="color: #0000FF">tagged</span> Add s<span style="color: #800080">:</span> <span style="color: #0000FF">case</span> <span style="color: #800080">(</span>s<span style="color: #800080">)</span> <span style="color: #0000FF">matches</span>
                      <span style="color: #800080">{.*,.*, .0} : ;</span>   <span style="color: #008000">// 无操作</span>
                      <span style="color: #800080">{</span>r1<span style="color: #800080">,</span>r2<span style="color: #800080">,</span>rd<span style="color: #800080">} :</span> rf<span style="color: #800080">[</span>rd<span style="color: #800080">] = </span>rf<span style="color: #800080">[</span>r1<span style="color: #800080">] +</span> rf<span style="color: #800080">[</span>r2<span style="color: #800080">];</span>
                  <span style="color: #0000FF">endcase</span>
    <span style="color: #0000FF">tagged</span> Jmp j <span style="color: #800080">:</span> <span style="color: #0000FF">case</span> <span style="color: #800080">(</span>j<span style="color: #800080">)</span> <span style="color: #0000FF">matches</span>
                       <span style="color: #0000FF">tagged</span> JmpU a <span style="color: #800080">:</span> pc <span style="color: #800080">=</span> pc <span style="color: #800080">+</span> a<span style="color: #800080">;</span>
                       <span style="color: #0000FF">tagged</span> JmpC <span style="color: #800080">{</span>c<span style="color: #800080">,</span>a<span style="color: #800080">}:</span> <span style="color: #0000FF">if</span> <span style="color: #800080">(</span>rf<span style="color: #800080">[</span>c<span style="color: #800080">])</span> pc <span style="color: #800080">=</span> a<span style="color: #800080">;</span>
                   <span style="color: #0000FF">endcase</span>
<span style="color: #0000FF">endcase</span></pre></div></div>
<p class="Element10">
下面的例子与前一个相同,但使用嵌套的标签联合体模式: </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00272');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00272"><pre class="Element12"><span style="color: #0000FF">case</span> <span style="color: #800080">(</span>instr<span style="color: #800080">)</span> <span style="color: #0000FF">matches</span>
    <span style="color: #0000FF">tagged</span> Add <span style="color: #800080">{</span>r1<span style="color: #800080">,</span>r2<span style="color: #800080">,</span>rd<span style="color: #800080">}</span> <span style="color: #800080">&amp;&amp; (</span>rd <span style="color: #800080">!=</span> <span style="color: #FF0000">0</span><span style="color: #800080">):</span> rf<span style="color: #800080">[</span>rd<span style="color: #800080">] =</span> rf<span style="color: #800080">[</span>r1<span style="color: #800080">] + </span>rf<span style="color: #800080">[</span>r2<span style="color: #800080">];</span>
    <span style="color: #0000FF">tagged</span> Jmp <span style="color: #800080">(</span><span style="color: #0000FF">tagged</span> JmpU a<span style="color: #800080">) :</span> pc <span style="color: #800080">=</span> pc <span style="color: #800080">+</span> a<span style="color: #800080">;</span>
    <span style="color: #0000FF">tagged</span> Jmp <span style="color: #800080">(</span><span style="color: #0000FF">tagged</span> JmpC <span style="color: #800080">{</span>c<span style="color: #800080">,</span>a<span style="color: #800080">}) :</span> <span style="color: #0000FF">if</span> <span style="color: #800080">(</span>rf<span style="color: #800080">[</span>c<span style="color: #800080">])</span> pc <span style="color: #800080">=</span> a<span style="color: #800080">;</span>
<span style="color: #0000FF">endcase</span></pre></div></div>
<p class="Element10">
下面的例子与前一个相同,但使用命名的结构体组件: </p><div class="Element170">
<a href="#" onclick="CopyElementToClipboard('code00273');">Copy Code</a></div>
<div class="Element13"><div class="Element12" id="code00273"><pre class="Element12"><span style="color: #0000FF">case</span> <span style="color: #800080">(</span>instr<span style="color: #800080">)</span> <span style="color: #0000FF">matches</span>
    <span style="color: #0000FF">tagged</span> Add <span style="color: #800080">{</span>reg2<span style="color: #800080">:</span>r2<span style="color: #800080">,</span>regd<span style="color: #800080">:</span>rd<span style="color: #800080">,</span>reg1<span style="color: #800080">:</span>r1<span style="color: #800080">}</span> <span style="color: #800080">&amp;&amp; (</span>rd <span style="color: #800080">!=</span> <span style="color: #FF0000">0</span><span style="color: #800080">):</span> rf<span style="color: #800080">[</span>rd<span style="color: #800080">] =</span> rf<span style="color: #800080">[</span>r1<span style="color: #800080">] + </span>rf<span style="color: #800080">[</span>r2<span style="color: #800080">];</span>
    <span style="color: #0000FF">tagged</span> Jmp <span style="color: #800080">(</span><span style="color: #0000FF">tagged</span> JmpU a<span style="color: #800080">) :</span> pc <span style="color: #800080">=</span> pc <span style="color: #800080">+</span> a<span style="color: #800080">;</span>
    <span style="color: #0000FF">tagged</span> Jmp <span style="color: #800080">(</span><span style="color: #0000FF">tagged</span> JmpC <span style="color: #800080">{</span>addr<span style="color: #800080">:</span>a,cc<span style="color: #800080">:</span>c<span style="color: #800080">}) :</span> <span style="color: #0000FF">if</span> <span style="color: #800080">(</span>rf<span style="color: #800080">[</span>c<span style="color: #800080">])</span> pc <span style="color: #800080">=</span> a<span style="color: #800080">;</span>
<span style="color: #0000FF">endcase</span></pre></div></div>
<p class="Element10">
<span style="color: #0000FF">casez</span>和<span style="color: #0000FF">casex</span>关键字同样可以用来替代<span style="color: #0000FF">case</span>关键字,并具有相同的语义。换句话说,在模式匹配过程中,无论两个位在哪里比较(无论它们是标签位还是成员位),<span style="color: #0000FF">casez</span>都会忽略<span style="color: #FF0000">z</span>位,<span style="color: #0000FF">casex</span>会忽略<span style="color: #FF0000">z</span>和<span style="color: #FF0000">x</span>位。&nbsp;</p>
<p class="Element10">
&nbsp;</p>
<p class="Element10">
<span style="color: #0000FF">priority</span>和<span style="color: #0000FF">unique</span>限定符扮演它们原本的角色。<span style="color: #0000FF">priority</span>意味着某个case条目必须被选择。<span style="color: #0000FF">unique</span>也同样意味着仅仅可以选择一个case条目,所以他们可以并行计算。&nbsp;</p></div>
</div>
<a name="Group"></a><div class="Element14">
<a onclick="toggleVisibilityStored('Group');" class="a_Element14"><img src="sectionminus.png" border="0" alt="" title="" id="imgGroup">Group</a></div>
<div id="divGroup">
<div class="Element11">
<div class="Element10">
<p class="Element10">
<a href="00584.html" target="topic">8.4.1 模式匹配</a></p></div>
</div>
</div>
<a name="Links"></a><div class="Element14">
<a onclick="toggleVisibilityStored('链接');" class="a_Element14"><img src="sectionminus.png" border="0" alt="" title="" id="img链接">链接</a></div>
<div id="div链接">
<div class="Element11">
<div class="Element10">
<a href="00584.html" target="topic">8.4.1 模式匹配</a></div>
</div>
</div>
</div>
<!-- End Page Content -->

<!-- Begin Page Footer -->
<hr width="98%" align="center" size="1" color="#CCCCCC" />
<table align="center" cellpadding="0" cellspacing="0" border="0">
	<tbody>
		<tr height="10">
			<td></td>
		</tr>
		<tr align="center">
			<td>
<script type="text/javascript"><!--
google_ad_client = "pub-5266859600380184";
google_ad_width = 468;
google_ad_height = 60;
google_ad_format = "468x60_as";
google_ad_type = "text_image";
google_ad_channel ="";
google_page_url = document.location;
//--></script>
<script type="text/javascript"
  src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
			</td>
		</tr>
		<tr height="15">
			<td></td>
		</tr>
		<tr align="center">
			<td>
				<font size=2>除非特别声明,原文版权归作者所有,如有转摘请注明原作者以及译者(<a href="http://www.fpgatech.net/"  target="_blank">FPGA技术网</a>)信息。<br />
如果您对本主题有何建议或意见,请登陆<a href="http://www.fpgatech.net/forum/forumdisplay.php?fid=18" target="_blank">FPGA开发者家园</a>提交,您的参与是我们前进的动力。</font>
<script language="javascript" type="text/javascript" src="http://js.users.51.la/195685.js"></script>
<noscript><a href="http://www.51.la/?195685" target="_blank"><img alt="&#x6211;&#x8981;&#x5566;&#x514D;&#x8D39;&#x7EDF;&#x8BA1;" src="http://img.users.51.la/195685.asp" style="border:none" /></a></noscript>
			</td>
		</tr>
	</tbody>
</table>

<!-- End Page Footer -->
</div>
</div>

<!-- End Client Area -->
</body></html>

⌨️ 快捷键说明

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