diff options
Diffstat (limited to 'html/subx/038---literal_strings.cc.html')
-rw-r--r-- | html/subx/038---literal_strings.cc.html | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/html/subx/038---literal_strings.cc.html b/html/subx/038---literal_strings.cc.html index 70494c30..16a42c35 100644 --- a/html/subx/038---literal_strings.cc.html +++ b/html/subx/038---literal_strings.cc.html @@ -86,7 +86,7 @@ if ('onhashchange' in window) { <span id="L24" class="LineNr"> 24 </span><span class="Normal">int</span> <a href='038---literal_strings.cc.html#L24'>Next_auto_global</a> = <span class="Constant">1</span><span class="Delimiter">;</span> <span id="L25" class="LineNr"> 25 </span><span class="Delimiter">:(code)</span> <span id="L26" class="LineNr"> 26 </span><span class="Normal">void</span> <a href='038---literal_strings.cc.html#L26'>transform_literal_strings</a><span class="Delimiter">(</span>program& p<span class="Delimiter">)</span> <span class="Delimiter">{</span> -<span id="L27" class="LineNr"> 27 </span> <a href='003trace.cc.html#L196'>trace</a><span class="Delimiter">(</span><span class="Constant">99</span><span class="Delimiter">,</span> <span class="Constant">"transform"</span><span class="Delimiter">)</span> << <span class="Constant">"-- move literal strings to <a href='011run.cc.html#L125'>data</a> segment"</span> << <a href='003trace.cc.html#L222'>end</a><span class="Delimiter">();</span> +<span id="L27" class="LineNr"> 27 </span> <a href='003trace.cc.html#L204'>trace</a><span class="Delimiter">(</span><span class="Constant">99</span><span class="Delimiter">,</span> <span class="Constant">"transform"</span><span class="Delimiter">)</span> << <span class="Constant">"-- move literal strings to <a href='011run.cc.html#L125'>data</a> segment"</span> << <a href='003trace.cc.html#L230'>end</a><span class="Delimiter">();</span> <span id="L28" class="LineNr"> 28 </span> <span class="Normal">if</span> <span class="Delimiter">(</span>p<span class="Delimiter">.</span><a href='011run.cc.html#L100'>segments</a><span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span> <span id="L29" class="LineNr"> 29 </span> segment& <a href='031check_operands.cc.html#L14'>code</a> = p<span class="Delimiter">.</span><a href='011run.cc.html#L100'>segments</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span> <span id="L30" class="LineNr"> 30 </span> segment <a href='011run.cc.html#L125'>data</a><span class="Delimiter">;</span> @@ -101,7 +101,7 @@ if ('onhashchange' in window) { <span id="L39" class="LineNr"> 39 </span> <a href='038---literal_strings.cc.html#L53'>add_global_to_data_segment</a><span class="Delimiter">(</span>global_name<span class="Delimiter">.</span>str<span class="Delimiter">(),</span> curr<span class="Delimiter">,</span> <a href='011run.cc.html#L125'>data</a><span class="Delimiter">);</span> <span id="L40" class="LineNr"> 40 </span> curr<span class="Delimiter">.</span><a href='011run.cc.html#L125'>data</a> = global_name<span class="Delimiter">.</span>str<span class="Delimiter">();</span> <span id="L41" class="LineNr"> 41 </span> <span class="Delimiter">}</span> -<span id="L42" class="LineNr"> 42 </span> <a href='003trace.cc.html#L196'>trace</a><span class="Delimiter">(</span><span class="Constant">99</span><span class="Delimiter">,</span> <span class="Constant">"transform"</span><span class="Delimiter">)</span> << <span class="Constant">"instruction after <a href='011run.cc.html#L209'>transform</a>: '"</span> << data_to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> << <span class="Constant">"'"</span> << <a href='003trace.cc.html#L222'>end</a><span class="Delimiter">();</span> +<span id="L42" class="LineNr"> 42 </span> <a href='003trace.cc.html#L204'>trace</a><span class="Delimiter">(</span><span class="Constant">99</span><span class="Delimiter">,</span> <span class="Constant">"transform"</span><span class="Delimiter">)</span> << <span class="Constant">"instruction after <a href='011run.cc.html#L209'>transform</a>: '"</span> << data_to_string<span class="Delimiter">(</span>inst<span class="Delimiter">)</span> << <span class="Constant">"'"</span> << <a href='003trace.cc.html#L230'>end</a><span class="Delimiter">();</span> <span id="L43" class="LineNr"> 43 </span> <span class="Delimiter">}</span> <span id="L44" class="LineNr"> 44 </span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='011run.cc.html#L125'>data</a><span class="Delimiter">.</span><a href='011run.cc.html#L109'>lines</a><span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span class="Identifier">return</span><span class="Delimiter">;</span> <span id="L45" class="LineNr"> 45 </span> <span class="Normal">if</span> <span class="Delimiter">(</span><a href='001help.cc.html#L157'>SIZE</a><span class="Delimiter">(</span>p<span class="Delimiter">.</span><a href='011run.cc.html#L100'>segments</a><span class="Delimiter">)</span> < <span class="Constant">2</span><span class="Delimiter">)</span> <span class="Delimiter">{</span> @@ -109,11 +109,11 @@ if ('onhashchange' in window) { <span id="L47" class="LineNr"> 47 </span> p<span class="Delimiter">.</span><a href='011run.cc.html#L100'>segments</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span><a href='011run.cc.html#L109'>lines</a><span class="Delimiter">.</span>swap<span class="Delimiter">(</span><a href='011run.cc.html#L125'>data</a><span class="Delimiter">.</span><a href='011run.cc.html#L109'>lines</a><span class="Delimiter">);</span> <span id="L48" class="LineNr"> 48 </span> <span class="Delimiter">}</span> <span id="L49" class="LineNr"> 49 </span> vector<line>& existing_data = p<span class="Delimiter">.</span><a href='011run.cc.html#L100'>segments</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">1</span><span class="Delimiter">).</span><a href='011run.cc.html#L109'>lines</a><span class="Delimiter">;</span> -<span id="L50" class="LineNr"> 50 </span> existing_data<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>existing_data<span class="Delimiter">.</span><a href='003trace.cc.html#L222'>end</a><span class="Delimiter">(),</span> <a href='011run.cc.html#L125'>data</a><span class="Delimiter">.</span><a href='011run.cc.html#L109'>lines</a><span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> <a href='011run.cc.html#L125'>data</a><span class="Delimiter">.</span><a href='011run.cc.html#L109'>lines</a><span class="Delimiter">.</span><a href='003trace.cc.html#L222'>end</a><span class="Delimiter">());</span> +<span id="L50" class="LineNr"> 50 </span> existing_data<span class="Delimiter">.</span>insert<span class="Delimiter">(</span>existing_data<span class="Delimiter">.</span><a href='003trace.cc.html#L230'>end</a><span class="Delimiter">(),</span> <a href='011run.cc.html#L125'>data</a><span class="Delimiter">.</span><a href='011run.cc.html#L109'>lines</a><span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> <a href='011run.cc.html#L125'>data</a><span class="Delimiter">.</span><a href='011run.cc.html#L109'>lines</a><span class="Delimiter">.</span><a href='003trace.cc.html#L230'>end</a><span class="Delimiter">());</span> <span id="L51" class="LineNr"> 51 </span><span class="Delimiter">}</span> <span id="L52" class="LineNr"> 52 </span> <span id="L53" class="LineNr"> 53 </span><span class="Normal">void</span> <a href='038---literal_strings.cc.html#L53'>add_global_to_data_segment</a><span class="Delimiter">(</span><span class="Normal">const</span> string& <a href='010---vm.cc.html#L228'>name</a><span class="Delimiter">,</span> <span class="Normal">const</span> word& value<span class="Delimiter">,</span> segment& <a href='011run.cc.html#L125'>data</a><span class="Delimiter">)</span> <span class="Delimiter">{</span> -<span id="L54" class="LineNr"> 54 </span> <a href='003trace.cc.html#L196'>trace</a><span class="Delimiter">(</span><span class="Constant">99</span><span class="Delimiter">,</span> <span class="Constant">"transform"</span><span class="Delimiter">)</span> << <span class="Constant">"adding global variable '"</span> << name << <span class="Constant">"' containing "</span> << value<span class="Delimiter">.</span><a href='011run.cc.html#L125'>data</a> << <a href='003trace.cc.html#L222'>end</a><span class="Delimiter">();</span> +<span id="L54" class="LineNr"> 54 </span> <a href='003trace.cc.html#L204'>trace</a><span class="Delimiter">(</span><span class="Constant">99</span><span class="Delimiter">,</span> <span class="Constant">"transform"</span><span class="Delimiter">)</span> << <span class="Constant">"adding global variable '"</span> << name << <span class="Constant">"' containing "</span> << value<span class="Delimiter">.</span><a href='011run.cc.html#L125'>data</a> << <a href='003trace.cc.html#L230'>end</a><span class="Delimiter">();</span> <span id="L55" class="LineNr"> 55 </span> <span class="Comment">// emit label</span> <span id="L56" class="LineNr"> 56 </span> <a href='011run.cc.html#L125'>data</a><span class="Delimiter">.</span><a href='011run.cc.html#L109'>lines</a><span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>label<span class="Delimiter">(</span><a href='010---vm.cc.html#L228'>name</a><span class="Delimiter">));</span> <span id="L57" class="LineNr"> 57 </span> <span class="Comment">// emit size for size-prefixed array</span> @@ -122,7 +122,7 @@ if ('onhashchange' in window) { <span id="L60" class="LineNr"> 60 </span> <span class="Comment">// emit data byte by byte</span> <span id="L61" class="LineNr"> 61 </span> <a href='011run.cc.html#L125'>data</a><span class="Delimiter">.</span><a href='011run.cc.html#L109'>lines</a><span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='011run.cc.html#L117'>line</a><span class="Delimiter">());</span> <span id="L62" class="LineNr"> 62 </span> line& curr = <a href='011run.cc.html#L125'>data</a><span class="Delimiter">.</span><a href='011run.cc.html#L109'>lines</a><span class="Delimiter">.</span>back<span class="Delimiter">();</span> -<span id="L63" class="LineNr"> 63 </span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Comment">/*</span><span class="Comment">skip <a href='011run.cc.html#L108'>start</a> quote</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span> i < <a href='001help.cc.html#L157'>SIZE</a><span class="Delimiter">(</span>value<span class="Delimiter">.</span><a href='011run.cc.html#L125'>data</a><span class="Delimiter">)</span>-<span class="Comment">/*</span><span class="Comment">skip <a href='003trace.cc.html#L222'>end</a> quote</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span> ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span> +<span id="L63" class="LineNr"> 63 </span> <span class="Normal">for</span> <span class="Delimiter">(</span><span class="Normal">int</span> i = <span class="Comment">/*</span><span class="Comment">skip <a href='011run.cc.html#L108'>start</a> quote</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span> i < <a href='001help.cc.html#L157'>SIZE</a><span class="Delimiter">(</span>value<span class="Delimiter">.</span><a href='011run.cc.html#L125'>data</a><span class="Delimiter">)</span>-<span class="Comment">/*</span><span class="Comment">skip <a href='003trace.cc.html#L230'>end</a> quote</span><span class="Comment">*/</span><span class="Constant">1</span><span class="Delimiter">;</span> ++i<span class="Delimiter">)</span> <span class="Delimiter">{</span> <span id="L64" class="LineNr"> 64 </span> <span class="Normal">char</span> c = value<span class="Delimiter">.</span><a href='011run.cc.html#L125'>data</a><span class="Delimiter">.</span>at<span class="Delimiter">(</span>i<span class="Delimiter">);</span> <span id="L65" class="LineNr"> 65 </span> curr<span class="Delimiter">.</span><a href='011run.cc.html#L118'>words</a><span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='011run.cc.html#L123'>word</a><span class="Delimiter">());</span> <span id="L66" class="LineNr"> 66 </span> curr<span class="Delimiter">.</span><a href='011run.cc.html#L118'>words</a><span class="Delimiter">.</span>back<span class="Delimiter">().</span><a href='011run.cc.html#L125'>data</a> = <a href='030---operands.cc.html#L274'>hex_byte_to_string</a><span class="Delimiter">(</span>c<span class="Delimiter">);</span> @@ -190,7 +190,7 @@ if ('onhashchange' in window) { <span id="L128" class="LineNr">128 </span> <span class="Delimiter">}</span> <span id="L129" class="LineNr">129 </span> result<span class="Delimiter">.</span><a href='011run.cc.html#L118'>words</a><span class="Delimiter">.</span>push_back<span class="Delimiter">(</span><a href='011run.cc.html#L123'>word</a><span class="Delimiter">());</span> <span id="L130" class="LineNr">130 </span> <a href='011run.cc.html#L184'>parse_word</a><span class="Delimiter">(</span>w<span class="Delimiter">.</span>str<span class="Delimiter">(),</span> result<span class="Delimiter">.</span><a href='011run.cc.html#L118'>words</a><span class="Delimiter">.</span>back<span class="Delimiter">());</span> -<span id="L131" class="LineNr">131 </span> <a href='003trace.cc.html#L196'>trace</a><span class="Delimiter">(</span><span class="Constant">99</span><span class="Delimiter">,</span> <span class="Constant">"parse2"</span><span class="Delimiter">)</span> << <span class="Constant">"word: "</span> << to_string<span class="Delimiter">(</span>result<span class="Delimiter">.</span><a href='011run.cc.html#L118'>words</a><span class="Delimiter">.</span>back<span class="Delimiter">())</span> << <a href='003trace.cc.html#L222'>end</a><span class="Delimiter">();</span> +<span id="L131" class="LineNr">131 </span> <a href='003trace.cc.html#L204'>trace</a><span class="Delimiter">(</span><span class="Constant">99</span><span class="Delimiter">,</span> <span class="Constant">"parse2"</span><span class="Delimiter">)</span> << <span class="Constant">"word: "</span> << to_string<span class="Delimiter">(</span>result<span class="Delimiter">.</span><a href='011run.cc.html#L118'>words</a><span class="Delimiter">.</span>back<span class="Delimiter">())</span> << <a href='003trace.cc.html#L230'>end</a><span class="Delimiter">();</span> <span id="L132" class="LineNr">132 </span> <span class="Delimiter">}</span> <span id="L133" class="LineNr">133 </span> <span class="Normal">if</span> <span class="Delimiter">(</span>!result<span class="Delimiter">.</span><a href='011run.cc.html#L118'>words</a><span class="Delimiter">.</span>empty<span class="Delimiter">())</span> <span id="L134" class="LineNr">134 </span> out<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>result<span class="Delimiter">);</span> @@ -270,7 +270,7 @@ if ('onhashchange' in window) { <span id="L208" class="LineNr">208 </span> parse_instruction_character_by_character<span class="Delimiter">(</span> <span id="L209" class="LineNr">209 </span> <span class="Constant">"68/push </span><span class="cSpecial">\"</span><span class="Constant">test</span><span class="cSpecial">\"</span><span class="Constant">/f"</span> <span class="Comment">// no newline, which is how calls from parse() will look</span> <span id="L210" class="LineNr">210 </span> <span class="Delimiter">);</span> -<span id="L211" class="LineNr">211 </span> <a href='003trace.cc.html#L250'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span> +<span id="L211" class="LineNr">211 </span> <a href='003trace.cc.html#L258'>CHECK_TRACE_CONTENTS</a><span class="Delimiter">(</span> <span id="L212" class="LineNr">212 </span> <span class="Constant">"parse2: <a href='011run.cc.html#L123'>word</a>: 68 /push^D"</span> <span id="L213" class="LineNr">213 </span> <span class="Constant">"parse2: <a href='011run.cc.html#L123'>word</a>: </span><span class="cSpecial">\"</span><span class="Constant">test</span><span class="cSpecial">\"</span><span class="Constant"> /f^D"</span> <span id="L214" class="LineNr">214 </span> <span class="Delimiter">);</span> |