about summary refs log tree commit diff stats
path: root/html/033check_operands.cc.html
diff options
context:
space:
mode:
authorKartik Agaram <vc@akkartik.com>2020-05-24 22:43:18 -0700
committerKartik Agaram <vc@akkartik.com>2020-05-24 22:43:18 -0700
commitfcc161e70502caf34bc0206d2c428e8341e97fa6 (patch)
tree8648c7b0de7dcf76d566e8ff1165d152325e756e /html/033check_operands.cc.html
parentf92836550b68fa7df077ea8cedbe7aa35a1095f4 (diff)
downloadmu-fcc161e70502caf34bc0206d2c428e8341e97fa6.tar.gz
6397
Drop '---' section boundaries from filenames. I noticed them confusing
tab-completion for certain advanced shell setups.
Diffstat (limited to 'html/033check_operands.cc.html')
-rw-r--r--html/033check_operands.cc.html28
1 files changed, 14 insertions, 14 deletions
diff --git a/html/033check_operands.cc.html b/html/033check_operands.cc.html
index c362b050..b657f740 100644
--- a/html/033check_operands.cc.html
+++ b/html/033check_operands.cc.html
@@ -334,7 +334,7 @@ if ('onhashchange' in window) {
 <span id="L273" class="LineNr">273 </span><span class="Comment">//: Many instructions can be checked just by comparing bitvectors.</span>
 <span id="L274" class="LineNr">274 </span>
 <span id="L275" class="LineNr">275 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L275'>compare_bitvector</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">uint8_t</span> expected<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; maybe_op_name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L276" class="LineNr">276 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='032---operands.cc.html#L430'>all_hex_bytes</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &amp;&amp; <a href='033check_operands.cc.html#L311'>has_operands</a><span class="Delimiter">(</span>inst<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// deliberately programming in raw hex; we'll raise a warning elsewhere</span>
+<span id="L276" class="LineNr">276 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='032operands.cc.html#L430'>all_hex_bytes</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &amp;&amp; <a href='033check_operands.cc.html#L311'>has_operands</a><span class="Delimiter">(</span>inst<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// deliberately programming in raw hex; we'll raise a warning elsewhere</span>
 <span id="L277" class="LineNr">277 </span>  <span class="Normal">uint8_t</span> bitvector = <a href='033check_operands.cc.html#L301'>compute_expected_operand_bitvector</a><span class="Delimiter">(</span>inst<span class="Delimiter">);</span>
 <span id="L278" class="LineNr">278 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L264'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// duplicate operand type</span>
 <span id="L279" class="LineNr">279 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>bitvector == expected<span class="Delimiter">)</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// all good with this instruction</span>
@@ -353,9 +353,9 @@ if ('onhashchange' in window) {
 <span id="L292" class="LineNr">292 </span>
 <span id="L293" class="LineNr">293 </span>string <a href='033check_operands.cc.html#L293'>maybe_name</a><span class="Delimiter">(</span><span class="Normal">const</span> word&amp; op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L294" class="LineNr">294 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_hex_byte<span class="Delimiter">(</span>op<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
-<span id="L295" class="LineNr">295 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
+<span id="L295" class="LineNr">295 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span><span class="Special"><a href='010vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
 <span id="L296" class="LineNr">296 </span>  <span class="Comment">// strip stuff in parens from the name</span>
-<span id="L297" class="LineNr">297 </span>  <span class="Normal">const</span> string&amp; s = get<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">);</span>
+<span id="L297" class="LineNr">297 </span>  <span class="Normal">const</span> string&amp; s = get<span class="Delimiter">(</span><span class="Special"><a href='010vm.cc.html#L342'>Name</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">);</span>
 <span id="L298" class="LineNr">298 </span>  <span class="Identifier">return</span> <span class="Constant">&quot; (&quot;</span>+s<span class="Delimiter">.</span>substr<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> s<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot; (&quot;</span><span class="Delimiter">))</span>+<span class="Constant">')'</span><span class="Delimiter">;</span>
 <span id="L299" class="LineNr">299 </span><span class="Delimiter">}</span>
 <span id="L300" class="LineNr">300 </span>
@@ -436,7 +436,7 @@ if ('onhashchange' in window) {
 <span id="L375" class="LineNr">375 </span><span class="Delimiter">}</span>
 <span id="L376" class="LineNr">376 </span>
 <span id="L377" class="LineNr">377 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L377'>check_operands_modrm</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">const</span> word&amp; op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L378" class="LineNr">378 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='032---operands.cc.html#L430'>all_hex_bytes</a><span class="Delimiter">(</span>inst<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// deliberately programming in raw hex; we'll raise a warning elsewhere</span>
+<span id="L378" class="LineNr">378 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='032operands.cc.html#L430'>all_hex_bytes</a><span class="Delimiter">(</span>inst<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// deliberately programming in raw hex; we'll raise a warning elsewhere</span>
 <span id="L379" class="LineNr">379 </span>  <a href='033check_operands.cc.html#L437'>check_operand_metadata_present</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;mod&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">);</span>
 <span id="L380" class="LineNr">380 </span>  <a href='033check_operands.cc.html#L437'>check_operand_metadata_present</a><span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;rm32&quot;</span><span class="Delimiter">,</span> op<span class="Delimiter">);</span>
 <span id="L381" class="LineNr">381 </span>  <span class="Comment">// no check for r32; some instructions don't use it; just assume it's 0 if missing</span>
@@ -462,15 +462,15 @@ if ('onhashchange' in window) {
 <span id="L401" class="LineNr">401 </span><span class="Comment">// same as compare_bitvector, with one additional exception for modrm-based</span>
 <span id="L402" class="LineNr">402 </span><span class="Comment">// instructions: they may use an extra displacement on occasion</span>
 <span id="L403" class="LineNr">403 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L403'>compare_bitvector_modrm</a><span class="Delimiter">(</span><span class="Normal">const</span> line&amp; inst<span class="Delimiter">,</span> <span class="Normal">uint8_t</span> expected<span class="Delimiter">,</span> <span class="Normal">const</span> string&amp; maybe_op_name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-<span id="L404" class="LineNr">404 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='032---operands.cc.html#L430'>all_hex_bytes</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &amp;&amp; <a href='033check_operands.cc.html#L311'>has_operands</a><span class="Delimiter">(</span>inst<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// deliberately programming in raw hex; we'll raise a warning elsewhere</span>
+<span id="L404" class="LineNr">404 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='032operands.cc.html#L430'>all_hex_bytes</a><span class="Delimiter">(</span>inst<span class="Delimiter">)</span> &amp;&amp; <a href='033check_operands.cc.html#L311'>has_operands</a><span class="Delimiter">(</span>inst<span class="Delimiter">))</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// deliberately programming in raw hex; we'll raise a warning elsewhere</span>
 <span id="L405" class="LineNr">405 </span>  <span class="Normal">uint8_t</span> bitvector = <a href='033check_operands.cc.html#L301'>compute_expected_operand_bitvector</a><span class="Delimiter">(</span>inst<span class="Delimiter">);</span>
 <span id="L406" class="LineNr">406 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span><a href='003trace.cc.html#L264'>trace_contains_errors</a><span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span>  <span class="Comment">// duplicate operand type</span>
 <span id="L407" class="LineNr">407 </span>  <span class="Comment">// update 'expected' bitvector for the additional exception</span>
 <span id="L408" class="LineNr">408 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>has_operand_metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;mod&quot;</span><span class="Delimiter">))</span> <span class="Delimiter">{</span>
-<span id="L409" class="LineNr">409 </span>    <span class="Normal">int32_t</span> mod = <a href='032---operands.cc.html#L507'>parse_int</a><span class="Delimiter">(</span>metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;mod&quot;</span><span class="Delimiter">).</span>data<span class="Delimiter">);</span>
+<span id="L409" class="LineNr">409 </span>    <span class="Normal">int32_t</span> mod = <a href='032operands.cc.html#L507'>parse_int</a><span class="Delimiter">(</span>metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;mod&quot;</span><span class="Delimiter">).</span>data<span class="Delimiter">);</span>
 <span id="L410" class="LineNr">410 </span>    <span class="Normal">switch</span> <span class="Delimiter">(</span>mod<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L411" class="LineNr">411 </span>    <span class="Normal">case</span> <span class="Constant">0</span>:
-<span id="L412" class="LineNr">412 </span>      <span class="Normal">if</span> <span class="Delimiter">(</span>has_operand_metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;rm32&quot;</span><span class="Delimiter">)</span> &amp;&amp; <a href='032---operands.cc.html#L507'>parse_int</a><span class="Delimiter">(</span>metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;rm32&quot;</span><span class="Delimiter">).</span>data<span class="Delimiter">)</span> == <span class="Constant">5</span><span class="Delimiter">)</span>
+<span id="L412" class="LineNr">412 </span>      <span class="Normal">if</span> <span class="Delimiter">(</span>has_operand_metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;rm32&quot;</span><span class="Delimiter">)</span> &amp;&amp; <a href='032operands.cc.html#L507'>parse_int</a><span class="Delimiter">(</span>metadata<span class="Delimiter">(</span>inst<span class="Delimiter">,</span> <span class="Constant">&quot;rm32&quot;</span><span class="Delimiter">).</span>data<span class="Delimiter">)</span> == <span class="Constant">5</span><span class="Delimiter">)</span>
 <span id="L413" class="LineNr">413 </span>        expected |= <span class="Delimiter">(</span><span class="Constant">1</span>&lt;&lt;DISP32<span class="Delimiter">);</span>
 <span id="L414" class="LineNr">414 </span>      <span class="Identifier">break</span><span class="Delimiter">;</span>
 <span id="L415" class="LineNr">415 </span>    <span class="Normal">case</span> <span class="Constant">1</span>:
@@ -506,7 +506,7 @@ if ('onhashchange' in window) {
 <span id="L445" class="LineNr">445 </span><span class="Delimiter">}</span>
 <span id="L446" class="LineNr">446 </span>
 <span id="L447" class="LineNr">447 </span><span class="Normal">void</span> <a href='033check_operands.cc.html#L447'>test_modrm_with_displacement</a><span class="Delimiter">()</span> <span class="Delimiter">{</span>
-<span id="L448" class="LineNr">448 </span>  <span class="Special"><a href='010---vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>u = <span class="Constant">0x1</span><span class="Delimiter">;</span>
+<span id="L448" class="LineNr">448 </span>  <span class="Special"><a href='010vm.cc.html#L25'>Reg</a></span>[EAX]<span class="Delimiter">.</span>u = <span class="Constant">0x1</span><span class="Delimiter">;</span>
 <span id="L449" class="LineNr">449 </span>  transform<span class="Delimiter">(</span>
 <span id="L450" class="LineNr">450 </span>      <span class="Constant">&quot;== code 0x1\n&quot;</span>
 <span id="L451" class="LineNr">451 </span>      <span class="Comment">// just avoid null pointer</span>
@@ -533,7 +533,7 @@ if ('onhashchange' in window) {
 <span id="L472" class="LineNr">472 </span>      <span class="Constant">&quot;8b/copy 0/mod/indirect 5/rm32/.disp32 2/r32/EDX\n&quot;</span>  <span class="Comment">// missing disp32</span>
 <span id="L473" class="LineNr">473 </span>  <span class="Delimiter">);</span>
 <span id="L474" class="LineNr">474 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L475" class="LineNr">475 </span>      <span class="Constant">&quot;error: '8b/copy 0/mod/indirect 5/rm32/.disp32 2/r32/EDX' (copy rm32 to r32): missing <a href='040---tests.cc.html#L82'>disp32</a> operand\n&quot;</span>
+<span id="L475" class="LineNr">475 </span>      <span class="Constant">&quot;error: '8b/copy 0/mod/indirect 5/rm32/.disp32 2/r32/EDX' (copy rm32 to r32): missing <a href='040tests.cc.html#L82'>disp32</a> operand\n&quot;</span>
 <span id="L476" class="LineNr">476 </span>  <span class="Delimiter">);</span>
 <span id="L477" class="LineNr">477 </span><span class="Delimiter">}</span>
 <span id="L478" class="LineNr">478 </span>
@@ -651,7 +651,7 @@ if ('onhashchange' in window) {
 <span id="L590" class="LineNr">590 </span>      <span class="Constant">&quot;59/pop-to-ECX  3/mod/direct 1/rm32/ECX 4/r32/ESP\n&quot;</span>
 <span id="L591" class="LineNr">591 </span>  <span class="Delimiter">);</span>
 <span id="L592" class="LineNr">592 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L593" class="LineNr">593 </span>      <span class="Constant">&quot;error: '59/pop-to-ECX 3/mod/direct 1/rm32/ECX 4/r32/ESP' (<a href='013direct_addressing.cc.html#L1270'>pop</a> top of stack to <a href='010---vm.cc.html#L11'>ECX</a>): unexpected modrm operand\n&quot;</span>
+<span id="L593" class="LineNr">593 </span>      <span class="Constant">&quot;error: '59/pop-to-ECX 3/mod/direct 1/rm32/ECX 4/r32/ESP' (<a href='013direct_addressing.cc.html#L1270'>pop</a> top of stack to <a href='010vm.cc.html#L11'>ECX</a>): unexpected modrm operand\n&quot;</span>
 <span id="L594" class="LineNr">594 </span>  <span class="Delimiter">);</span>
 <span id="L595" class="LineNr">595 </span><span class="Delimiter">}</span>
 <span id="L596" class="LineNr">596 </span>
@@ -664,7 +664,7 @@ if ('onhashchange' in window) {
 <span id="L603" class="LineNr">603 </span>    <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L604" class="LineNr">604 </span>  <span class="Delimiter">}</span>
 <span id="L605" class="LineNr">605 </span>  <a href='011run.cc.html#L127'>word</a> op = <a href='033check_operands.cc.html#L41'>preprocess_op</a><span class="Delimiter">(</span>inst<span class="Delimiter">.</span><a href='011run.cc.html#L122'>words</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">));</span>
-<span id="L606" class="LineNr">606 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+<span id="L606" class="LineNr">606 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span><span class="Special"><a href='010vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">))</span> <span class="Delimiter">{</span>
 <span id="L607" class="LineNr">607 </span>    <a href='003trace.cc.html#L228'>raise</a> &lt;&lt; <span class="Constant">&quot;unknown 2-byte opcode '0f &quot;</span> &lt;&lt; op<span class="Delimiter">.</span>data &lt;&lt; <span class="Constant">&quot;'\n&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
 <span id="L608" class="LineNr">608 </span>    <span class="Identifier">return</span><span class="Delimiter">;</span>
 <span id="L609" class="LineNr">609 </span>  <span class="Delimiter">}</span>
@@ -682,7 +682,7 @@ if ('onhashchange' in window) {
 <span id="L621" class="LineNr">621 </span>      <span class="Constant">&quot;  0f 84  # jmp if ZF to ??\n&quot;</span>
 <span id="L622" class="LineNr">622 </span>  <span class="Delimiter">);</span>
 <span id="L623" class="LineNr">623 </span>  <a href='003trace.cc.html#L292'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span>
-<span id="L624" class="LineNr">624 </span>      <span class="Constant">&quot;error: '0f 84' (jump <a href='040---tests.cc.html#L82'>disp32</a> bytes away if equal, if <a href='010---vm.cc.html#L80'>ZF</a> is set): missing <a href='040---tests.cc.html#L82'>disp32</a> operand\n&quot;</span>
+<span id="L624" class="LineNr">624 </span>      <span class="Constant">&quot;error: '0f 84' (jump <a href='040tests.cc.html#L82'>disp32</a> bytes away if equal, if <a href='010vm.cc.html#L80'>ZF</a> is set): missing <a href='040tests.cc.html#L82'>disp32</a> operand\n&quot;</span>
 <span id="L625" class="LineNr">625 </span>  <span class="Delimiter">);</span>
 <span id="L626" class="LineNr">626 </span><span class="Delimiter">}</span>
 <span id="L627" class="LineNr">627 </span>
@@ -741,9 +741,9 @@ if ('onhashchange' in window) {
 <span id="L680" class="LineNr">680 </span>
 <span id="L681" class="LineNr">681 </span>string <a href='033check_operands.cc.html#L681'>maybe_name_0f</a><span class="Delimiter">(</span><span class="Normal">const</span> word&amp; op<span class="Delimiter">)</span> <span class="Delimiter">{</span>
 <span id="L682" class="LineNr">682 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!is_hex_byte<span class="Delimiter">(</span>op<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
-<span id="L683" class="LineNr">683 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
+<span id="L683" class="LineNr">683 </span>  <span class="Normal">if</span> <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span><span class="Special"><a href='010vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">))</span> <span class="Identifier">return</span> <span class="Constant">&quot;&quot;</span><span class="Delimiter">;</span>
 <span id="L684" class="LineNr">684 </span>  <span class="Comment">// strip stuff in parens from the name</span>
-<span id="L685" class="LineNr">685 </span>  <span class="Normal">const</span> string&amp; s = get<span class="Delimiter">(</span><span class="Special"><a href='010---vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">);</span>
+<span id="L685" class="LineNr">685 </span>  <span class="Normal">const</span> string&amp; s = get<span class="Delimiter">(</span><span class="Special"><a href='010vm.cc.html#L343'>Name_0f</a></span><span class="Delimiter">,</span> op<span class="Delimiter">.</span>data<span class="Delimiter">);</span>
 <span id="L686" class="LineNr">686 </span>  <span class="Identifier">return</span> <span class="Constant">&quot; (&quot;</span>+s<span class="Delimiter">.</span>substr<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">,</span> s<span class="Delimiter">.</span>find<span class="Delimiter">(</span><span class="Constant">&quot; (&quot;</span><span class="Delimiter">))</span>+<span class="Constant">')'</span><span class="Delimiter">;</span>
 <span id="L687" class="LineNr">687 </span><span class="Delimiter">}</span>
 <span id="L688" class="LineNr">688 </span>