Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
Comment: | Update the generator AWK script for opcodes.h so that it always generates opcode numbers in the same order and is not dependent on the hash order of opcode names within AWK. |
---|---|
Downloads: | Tarball | ZIP archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
e730195f52429dc1bc4c1559880effd6 |
User & Date: | drh 2009-11-02 18:14:50.000 |
Context
2009-11-02
| ||
18:44 | Bug fix in the recent changes to mkopcodeh.awk. (check-in: 6610cac435 user: drh tags: trunk) | |
18:14 | Update the generator AWK script for opcodes.h so that it always generates opcode numbers in the same order and is not dependent on the hash order of opcode names within AWK. (check-in: e730195f52 user: drh tags: trunk) | |
18:01 | Do not insert the date and time of generation into the amalgamation. (check-in: 9f6cf13dfb user: drh tags: trunk) | |
Changes
Changes to mkopcodeh.awk.
︙ | ︙ | |||
21 22 23 24 25 26 27 | # OP_Add and OP_Divide. By making TK_ADD==OP_Add and TK_DIVIDE==OP_Divide, # code to translate from one to the other is avoided. This makes the # code generator run (infinitesimally) faster and more importantly it makes # the library footprint smaller. # # This script also scans for lines of the form: # | | | | | < < < < < < | 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | # OP_Add and OP_Divide. By making TK_ADD==OP_Add and TK_DIVIDE==OP_Divide, # code to translate from one to the other is avoided. This makes the # code generator run (infinitesimally) faster and more importantly it makes # the library footprint smaller. # # This script also scans for lines of the form: # # case OP_aaaa: /* jump, in1, in2, in3, out2-prerelease, out3 */ # # When such comments are found on an opcode, it means that certain # properties apply to that opcode. Set corresponding flags using the # OPFLG_INITIALIZER macro. # # Remember the TK_ values from the parse.h file /^#define TK_/ { tk[$2] = 0+$3 } |
︙ | ︙ | |||
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | in2[name] = 1 }else if(x=="in3"){ in3[name] = 1 }else if(x=="out3"){ out3[name] = 1 } } } # Assign numbers to all opcodes and output the result. END { cnt = 0 max = 0 print "/* Automatically generated. Do not edit */" print "/* See the mkopcodeh.awk script for details */" op["OP_Noop"] = -1; op["OP_Explain"] = -1; | > > | | 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | in2[name] = 1 }else if(x=="in3"){ in3[name] = 1 }else if(x=="out3"){ out3[name] = 1 } } order[n_op++] = name; } # Assign numbers to all opcodes and output the result. END { cnt = 0 max = 0 print "/* Automatically generated. Do not edit */" print "/* See the mkopcodeh.awk script for details */" op["OP_Noop"] = -1; op["OP_Explain"] = -1; for(i=0; i<n_op; i++){ name = order[i]; if( op[name]<0 ){ cnt++ while( used[cnt] ) cnt++ op[name] = cnt } used[op[name]] = 1; if( op[name]>max ) max = op[name] |
︙ | ︙ | |||
119 120 121 122 123 124 125 | # Generate the bitvectors: # # bit 0: jump # bit 1: pushes a result onto stack # bit 2: output to p1. release p1 before opcode runs # for(i=0; i<=max; i++) bv[i] = 0; | > | | 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | # Generate the bitvectors: # # bit 0: jump # bit 1: pushes a result onto stack # bit 2: output to p1. release p1 before opcode runs # for(i=0; i<=max; i++) bv[i] = 0; for(i=0; i<n_op; i++){ name = order[i]; x = op[name] a0 = a1 = a2 = a3 = a4 = a5 = a6 = a7 = 0 # a8 = a9 = a10 = a11 = a12 = a13 = a14 = a15 = 0 if( jump[name] ) a0 = 1; if( out2_prerelease[name] ) a1 = 2; if( in1[name] ) a2 = 4; if( in2[name] ) a3 = 8; |
︙ | ︙ |