about summary refs log blame commit diff stats
path: root/run_one_test.subx
blob: 37d72ea01b06f6248f83f0531508d550fa7636c9 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11










                                                                                                                                                 
                                                                                                                                                                       


                               
                                                                                                                                                                  





                                           
                                                                                                                                                                  

                                      

                                                                                                                                                                                      


                            
# run a single test

== code
#   instruction                     effective address                                                   register    displacement    immediate
# . op          subop               mod             rm32          base        index         scale       r32
# . 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

Entry:
    # Heap = new-segment(64KB)
    # . . push args
    68/push  Heap/imm32
    ff          6/subop/push        0/mod/indirect  5/rm32/.disp32            .             .           .           Heap-size/disp32                  # push *Heap-size
    # . . call
    e8/call  new-segment/disp32
    # . . discard args
    81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               8/imm32           # add to esp
    # initialize-trace-stream(256KB)
    # . . push args
    68/push  0x40000/imm32/256KB
    # . . call
    e8/call  initialize-trace-stream/disp32
    # . . discard args
    81          0/subop/add         3/mod/direct    4/rm32/esp    .           .             .           .           .               4/imm32           # add to esp
    # for debugging: run a single test
    e8/call $TEST_NAME/disp32
    8b/copy                         0/mod/indirect  5/rm32/.disp32            .             .           3/r32/ebx   Num-test-failures/disp32          # copy *Num-test-failures to ebx
    b8/copy-to-eax  1/imm32/exit
    cd/syscall  0x80/imm8

# . . vim:nowrap:textwidth=0
bold; font-style: italic } /* Generic.EmphStrong */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
## Lines in source files
                          Initial   -whitespace/comments/tests
apps/factorial.subx         120       44
apps/crenshaw2-1.subx       561      180
apps/crenshaw2-1b.subx      757      186
apps/hex.subx              1442      149
apps/survey.subx           4733      905
apps/pack.subx             5881      840
apps/dquotes.subx          1925      383
apps/assort.subx            905      183
apps/tests.subx             284      137
apps/sigils.subx           4641      896
apps/calls.subx            1785      448
apps/braces.subx            360      121
apps/mu.subx (incomplete) 16039     5277

## Total source lines needed including libraries
                          Initial   -whitespace/comments/tests/dead code
apps/factorial.subx        8436     1700
apps/crenshaw2-1.subx      8644     1925
apps/crenshaw2-1b.subx     8736     1931
apps/hex.subx              9065     1908
apps/survey.subx          10217     3248
apps/pack.subx            10589     2727
apps/dquotes.subx          9262     2468
apps/assort.subx           8686     2425
apps/tests.subx            8519     2214
apps/sigils.subx          10578     3043
apps/calls.subx            9242     2388
apps/braces.subx           8545     2111
apps/mu.subx (incomplete) 20534     7829

## executable size in KB
                          Initial   -tests/dead code
apps/crenshaw2-1            41        4.3
apps/crenshaw2-1b           42        5.2
apps/factorial              42        5.2
apps/hex                    45        5.0
apps/survey                 51        9.6
apps/pack                   54        7.6
apps/dquotes                46        6.5
apps/assort                 42        6.4
apps/tests                  41        5.8
apps/sigils                 54        9.1
apps/calls                  47        7.1
apps/braces                 42        5.9
apps/mu (incomplete)       268       43.0

## history of apps/mu.subx
                                                        date    commit  mu.subx   -tests/cmts  binary (KB excl. dead code)
parsing function headers                           2019 Oct 30  5725      621         277         6.9
function calls                                          Nov 10  5739     1202         346         7.2
code-generating primitive instructions                  Nov 17  5750     1923         363         7.3
arguments                                               Nov 30  5785     4038        1330        13
return values                                      2020 Jan 1   5878     5432        1457        15
compound types: `addr` and `array`                      Jan 20  5911     6023        1697        16
local variables and their reclamation                   Jan 27  5934     6340        1900        18
register locals and shadowing                           Jan 27  5940     6498        1940        18
blocks                                                  Jan 29  5948     7455        2534        22
break/continue instructions                             Jan 30  5964     7871        2558        22
cleaning up locals in the presence of early exits       Feb 9   6000     8554        2918        26
pointer dereferencing                                   Feb 20  6040     9053        3075        27
arrays, and indexing them with a non-literal
user-defined types, and getting fields in them          Mar 11  6135    11592        4165        33

cleanup: switch to handles everywhere                   May 22  6382    15014        5064        39

vim:nowrap:tw&