1 <!DOCTYPE HTML PUBLIC
"-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
4 <meta http-equiv=
"content-type" content=
"text/html; charset=UTF-8">
5 <title>Mu - linux/ex14.subx
</title>
6 <meta name=
"Generator" content=
"Vim/8.1">
7 <meta name=
"plugin-version" content=
"vim8.1_v1">
8 <meta name=
"syntax" content=
"none">
9 <meta name=
"settings" content=
"number_lines,use_css,no_foldcolumn,expand_tabs,line_ids,prevent_copy=">
10 <meta name=
"colorscheme" content=
"minimal-light">
11 <style type=
"text/css">
13 pre
{ font-family: monospace
; color: #000000; background-color: #ffffd7; }
14 body
{ font-size:12pt; font-family: monospace
; color: #000000; background-color: #ffffd7; }
16 * { font-size:12pt; font-size: 1em; }
17 .subxComment { color: #005faf; }
18 .subxS2Comment { color: #8a8a8a; }
20 .subxS1Comment { color: #0000af; }
21 .SpecialChar { color: #d70000; }
22 .Normal { color: #000000; background-color: #ffffd7; padding-bottom: 1px; }
23 .Constant { color: #008787; }
27 <script type='text/javascript'
>
30 /* function to open any folds containing a jumped-to line before jumping to it */
34 lineNum
= window
.location
.hash
;
35 lineNum
= lineNum
.substr(1); /* strip off '#' */
37 if (lineNum
.indexOf('L') == -1) {
38 lineNum
= 'L'+lineNum
;
40 var lineElem
= document
.getElementById(lineNum
);
41 /* Always jump to new location even if the line was hidden inside a fold, or
42 * we corrected the raw number to a line ID.
45 lineElem
.scrollIntoView(true);
49 if ('onhashchange' in window
) {
50 window
.onhashchange
= JumpToLine
;
56 <body onload='JumpToLine();'
>
57 <a href='https://github.com/akkartik/mu/blob/main/linux/ex14.subx'
>https://github.com/akkartik/mu/blob/main/linux/ex14.subx
</a>
58 <pre id='vimCodeElement'
>
59 <span id=
"L1" class=
"LineNr"> 1 </span><span class=
"subxComment"># Multiply
2 numbers.
</span>
60 <span id=
"L2" class=
"LineNr"> 2 </span><span class=
"subxComment">#
</span>
61 <span id=
"L3" class=
"LineNr"> 3 </span><span class=
"subxComment"># To run:
</span>
62 <span id=
"L4" class=
"LineNr"> 4 </span><span class=
"subxComment"># $ bootstrap/bootstrap translate ex14.subx -o ex14
</span>
63 <span id=
"L5" class=
"LineNr"> 5 </span><span class=
"subxComment"># $ bootstrap/bootstrap run ex14
</span>
64 <span id=
"L6" class=
"LineNr"> 6 </span><span class=
"subxComment"># Expected result:
</span>
65 <span id=
"L7" class=
"LineNr"> 7 </span><span class=
"subxComment"># $ echo $?
</span>
66 <span id=
"L8" class=
"LineNr"> 8 </span><span class=
"subxComment">#
6</span>
67 <span id=
"L9" class=
"LineNr"> 9 </span>
68 <span id=
"L10" class=
"LineNr">10 </span>== code
69 <span id=
"L11" class=
"LineNr">11 </span><span class=
"subxComment"># instruction effective address register displacement immediate
</span>
70 <span id=
"L12" class=
"LineNr">12 </span><span class=
"subxS1Comment"># . op subop mod rm32 base index scale r32
</span>
71 <span id=
"L13" class=
"LineNr">13 </span><span class=
"subxS1Comment"># .
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>
72 <span id=
"L14" class=
"LineNr">14 </span>
73 <span id=
"L15" class=
"LineNr">15 </span><span class=
"SpecialChar">Entry
</span>:
74 <span id=
"L16" class=
"LineNr">16 </span> b8/copy-to-eax
1/imm32
75 <span id=
"L17" class=
"LineNr">17 </span> b9/copy-to-ecx
2/imm32
76 <span id=
"L18" class=
"LineNr">18 </span> bb/copy-to-ebx
3/imm32
77 <span id=
"L19" class=
"LineNr">19 </span>
78 <span id=
"L20" class=
"LineNr">20 </span> 69/multiply
3/mod/direct
1/rm32/ecx
<span class=
"Normal"> .
</span> <span class=
"Normal"> .
</span> <span class=
"Normal"> .
</span> 3/r32/ebx
3/imm32
<span class=
"subxComment"># ebx = ecx *
3</span>
79 <span id=
"L21" class=
"LineNr">21 </span>
80 <span id=
"L22" class=
"LineNr">22 </span><span class=
"Constant">$exit
</span>:
81 <span id=
"L23" class=
"LineNr">23 </span> <span class=
"subxComment"># exit(ebx)
</span>
82 <span id=
"L24" class=
"LineNr">24 </span> e8/call
<a href='
000init.subx.html#L18'
>syscall_exit
</a>/disp32
83 <span id=
"L25" class=
"LineNr">25 </span>
84 <span id=
"L26" class=
"LineNr">26 </span><span class=
"subxS2Comment"># . . vim
:nowrap:textwidth=
0</span>
88 <!-- vim: set foldmethod=manual : -->