about summary refs log tree commit diff stats
path: root/html/subx/ex6.subx.html
diff options
context:
space:
mode:
Diffstat (limited to 'html/subx/ex6.subx.html')
-rw-r--r--html/subx/ex6.subx.html95
1 files changed, 95 insertions, 0 deletions
diff --git a/html/subx/ex6.subx.html b/html/subx/ex6.subx.html
new file mode 100644
index 00000000..f79324f6
--- /dev/null
+++ b/html/subx/ex6.subx.html
@@ -0,0 +1,95 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+<head>
+<meta http-equiv="content-type" content="text/html; charset=UTF-8">
+<title>Mu - subx/ex6.subx</title>
+<meta name="Generator" content="Vim/7.4">
+<meta name="plugin-version" content="vim7.4_v2">
+<meta name="syntax" content="none">
+<meta name="settings" content="number_lines,use_css,pre_wrap,no_foldcolumn,expand_tabs,line_ids,prevent_copy=">
+<meta name="colorscheme" content="minimal">
+<style type="text/css">
+<!--
+pre { white-space: pre-wrap; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+body { font-size: 12pt; font-family: monospace; color: #aaaaaa; background-color: #080808; }
+a { color:#eeeeee; text-decoration: none; }
+a:hover { text-decoration: underline; }
+* { font-size: 12pt; font-size: 1em; }
+.SalientComment { color: #00ffff; }
+.LineNr { color: #444444; }
+.Comment { color: #9090ff; }
+.Comment a { color:#0000ee; text-decoration:underline; }
+-->
+</style>
+
+<script type='text/javascript'>
+<!--
+
+/* function to open any folds containing a jumped-to line before jumping to it */
+function JumpToLine()
+{
+  var lineNum;
+  lineNum = window.location.hash;
+  lineNum = lineNum.substr(1); /* strip off '#' */
+
+  if (lineNum.indexOf('L') == -1) {
+    lineNum = 'L'+lineNum;
+  }
+  lineElem = document.getElementById(lineNum);
+  /* Always jump to new location even if the line was hidden inside a fold, or
+   * we corrected the raw number to a line ID.
+   */
+  if (lineElem) {
+    lineElem.scrollIntoView(true);
+  }
+  return true;
+}
+if ('onhashchange' in window) {
+  window.onhashchange = JumpToLine;
+}
+
+-->
+</script>
+</head>
+<body onload='JumpToLine();'>
+<pre id='vimCodeElement'>
+<span id="L1" class="LineNr"> 1 </span><span class="SalientComment">## print out a (global variable) string to stdout</span>
+<span id="L2" class="LineNr"> 2 </span><span class="Comment">#</span>
+<span id="L3" class="LineNr"> 3 </span><span class="Comment"># To run:</span>
+<span id="L4" class="LineNr"> 4 </span><span class="Comment">#   $ subx translate ex6.subx ex6</span>
+<span id="L5" class="LineNr"> 5 </span><span class="Comment">#   $ subx run ex6</span>
+<span id="L6" class="LineNr"> 6 </span><span class="Comment">#   Hello, world!</span>
+<span id="L7" class="LineNr"> 7 </span>
+<span id="L8" class="LineNr"> 8 </span>== 0x08048074  <span class="Comment"># code segment, after leaving room for ELF header and segment headers</span>
+<span id="L9" class="LineNr"> 9 </span><span class="Comment"># instruction                     effective address                                                   operand     displacement    immediate</span>
+<span id="L10" class="LineNr">10 </span><span class="Comment"># op          subop               mod             rm32          base        index         scale       r32</span>
+<span id="L11" class="LineNr">11 </span><span class="Comment"># 1-3 bytes   3 bits              2 bits          3 bits        3 bits      3 bits        2 bits      2 bits      0/1/2/4 bytes   0/1/2/4 bytes</span>
+<span id="L12" class="LineNr">12 </span>
+<span id="L13" class="LineNr">13 </span>  <span class="SalientComment">## write(stdout, x, 1)</span>
+<span id="L14" class="LineNr">14 </span>  <span class="Comment"># fd = 1 (stdout)</span>
+<span id="L15" class="LineNr">15 </span>  bb/copy                                                                                                                         1/imm32           <span class="Comment"># copy 1 to EBX</span>
+<span id="L16" class="LineNr">16 </span>  <span class="Comment"># initialize x (location to write result to)</span>
+<span id="L17" class="LineNr">17 </span>  b9/copy                                                                                                                         0x08049097/imm32  <span class="Comment"># copy to ECX</span>
+<span id="L18" class="LineNr">18 </span>  <span class="Comment"># initialize size</span>
+<span id="L19" class="LineNr">19 </span>  ba/copy                                                                                                                         0x08049093/imm32  <span class="Comment"># copy to EDX</span>
+<span id="L20" class="LineNr">20 </span>  8b/copy                         0/mod/indirect  2/rm32/edx                                          2/r32/edx                                     <span class="Comment"># copy *EDX to EDX</span>
+<span id="L21" class="LineNr">21 </span>  <span class="Comment"># write(fd, x, size)</span>
+<span id="L22" class="LineNr">22 </span>  b8/copy                                                                                                                         4/imm32           <span class="Comment"># copy 4 to EAX</span>
+<span id="L23" class="LineNr">23 </span>  cd/syscall                                                                                                                      0x80/imm8         <span class="Comment"># int 80h</span>
+<span id="L24" class="LineNr">24 </span>
+<span id="L25" class="LineNr">25 </span>  <span class="SalientComment">## exit(EBX)</span>
+<span id="L26" class="LineNr">26 </span>  b8/copy                                                                                                                         1/imm32           <span class="Comment"># copy 1 to EAX</span>
+<span id="L27" class="LineNr">27 </span>  cd/syscall                                                                                                                      0x80/imm8         <span class="Comment"># int 80h</span>
+<span id="L28" class="LineNr">28 </span>
+<span id="L29" class="LineNr">29 </span>== 0x08049093
+<span id="L30" class="LineNr">30 </span><span class="Comment"># size of string</span>
+<span id="L31" class="LineNr">31 </span>0e 00 00 00
+<span id="L32" class="LineNr">32 </span><span class="Comment"># string</span>
+<span id="L33" class="LineNr">33 </span>  48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21 0a
+<span id="L34" class="LineNr">34 </span><span class="Comment"># h  e  l  l  o  ,  ␣  w  o  r  l  d  !  newline</span>
+<span id="L35" class="LineNr">35 </span>
+<span id="L36" class="LineNr">36 </span><span class="Comment"># vim&#0058;ft=subx:nowrap</span>
+</pre>
+</body>
+</html>
+<!-- vim: set foldmethod=manual : -->
72' href='#n372'>372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456