home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_300 / 357_01 / cstar1.exe / T1.C < prev    next >
C/C++ Source or Header  |  1991-06-18  |  16KB  |  909 lines

  1. /*
  2.     source:  t1.c
  3.     started: October 16, 1985
  4.     version:
  5.         September 10, 1986;
  6.         March 7, 1989
  7.  
  8.     PUBLIC DOMAIN SOFTWARE
  9.  
  10.     The CSTAR program was placed in    the public domain on June 15, 1991,
  11.     by its author and sole owner,
  12.  
  13.         Edward K. Ream
  14.         1617 Monroe Street
  15.         Madison, WI 53711
  16.         (608) 257-0802
  17.  
  18.     CSTAR may be used for any commercial or non-commercial purpose.
  19.  
  20.     See cstar.h or cstar.c for a DISCLAIMER OF WARRANTIES.
  21. */
  22. #include "cstar.h"
  23.  
  24. #define table(name, n) struct t1_tab_struct FAR name [n+1] = {
  25. #define sub_tab(name, str_len, n_entries) {name, str_len, n_entries}
  26. #define end_tab {0L, 0, 0}}
  27.  
  28. #define header(label,n_entries)\
  29.     struct t1_entry_struct FAR label [n_entries] = {
  30.  
  31. /* -----
  32. #define ins(string,val)        dc.b string,0,X_TOK,val
  33. #define pseudo(string,val)    dc.b string,0,Z_TOK,val
  34. #define areg(string,val)    dc.b string,0,ID_TOK,val
  35. #define dreg(string,val)    dc.b string,0,ID_TOK,val
  36. #define greg(string,val)    dc.b string,0,ID_TOK,val
  37. #define key(string,val)        dc.b string,0,val,0
  38. #define cc_code(string,val)    dc.b string,0,CC_TOK,val
  39. ----- */
  40.  
  41. #define ins(string,val)        { string,X_TOK,val  }
  42. #define pseudo(string,val)    { string,Z_TOK,val  }
  43. #define areg(string,val)    { string,ID_TOK,val }
  44. #define dreg(string,val)    { string,ID_TOK,val }
  45. #define greg(string,val)    { string,ID_TOK,val }
  46. #define key(string,val)        { string,val,0      }
  47. #define cc_code(string,val)    { string,CC_TOK,val }
  48.  
  49. #define end_h             }
  50.  
  51. /*
  52.     Reserved word tables (One entry per reserved word.)
  53.  
  54.     This table holds the names of all reserved words
  55.         machine language instructions
  56.         pseudo ops
  57.         condition constant
  58.         C reserved words
  59.  
  60.     This table is used by the is_reserved routine in the preprocessor.
  61.  
  62.     Each table is made up of zero or more subtables, one subtable for
  63.     each length.  Subtables are arranged in increasing length.
  64.     With each subtable, entries are arranged alphabetically.
  65. */
  66.  
  67. /* ----- A TABLE ----- */
  68. #define a2_n 8
  69.     header(a2_tab, a2_n)
  70.     areg("a0", R_A0),
  71.     areg("a1", R_A1),
  72.     areg("a2", R_A2),
  73.     areg("a3", R_A3),
  74.     areg("a4", R_A4),
  75.     areg("a5", R_A5),
  76.     areg("a6", R_A6),
  77.     areg("a7", R_A7)
  78.     end_h;
  79.  
  80. #define a3_n 12
  81.     header(a3_tab, a3_n)
  82.     areg("a0w", R_A0W),
  83.     areg("a1w", R_A1W),
  84.     areg("a2w", R_A2W),
  85.     areg("a3w", R_A3W),
  86.     areg("a4w", R_A4W),
  87.     areg("a5w", R_A5W),
  88.     areg("a6w", R_A6W),
  89.     areg("a7w", R_A7W),
  90.     ins("add", X_ADD),
  91.     ins("and", X_AND),
  92.     ins("asl", X_ASL),
  93.     ins("asr", X_ASR)
  94.     end_h;
  95.  
  96. #define a4_n 7
  97.     header(a4_tab, a4_n)
  98.     ins("abcd", X_ABCD),
  99.     ins("adda", X_ADDA),
  100.     ins("addi", X_ADDI),
  101.     ins("addq", X_ADDQ),
  102.     ins("addx", X_ADDX),
  103.     ins("andi", X_ADDI),
  104.     key("auto", K_AUTO)
  105.     end_h;
  106.  
  107. #define a5_n 2
  108.     header(a5_tab, a5_n)
  109.     pseudo("addsp", Z_ADDSP),
  110.     pseudo("adjsp", Z_ADJSP)
  111.     end_h;
  112.  
  113.     table(a_tab, 4)
  114.     sub_tab(a2_tab, 2, a2_n),
  115.     sub_tab(a3_tab, 3, a3_n),
  116.     sub_tab(a4_tab, 4, a4_n),
  117.     sub_tab(a5_tab, 5, a5_n),
  118.     end_tab;
  119.  
  120. /* ----- B TABLE ----- */
  121. #define b3_n 18
  122.     header(b3_tab, b3_n)
  123.     ins("bcc", X_BCC),
  124.     ins("bcs", X_BCS),
  125.     ins("beq", X_BEQ),
  126.     ins("bge", X_BGE),
  127.     ins("bgt", X_BGT),
  128.     ins("bhi", X_BHI),
  129.     ins("ble", X_BLE),
  130.     ins("blo", X_BLO),
  131.     ins("bls", X_BLS),
  132.     ins("blt", X_BLT),
  133.     ins("bmi", X_BMI),
  134.     ins("bne", X_BNE),
  135.     ins("bpl", X_BPL),
  136.     ins("bra", X_BRA),
  137.     ins("bsr", X_BSR),
  138.     pseudo("bss", Z_BSS),
  139.     ins("bvc", X_BVC),
  140.     ins("bvs", X_BVS)
  141.     end_h;
  142.  
  143. #define b4_n 4
  144.     header(b4_tab, b4_n)
  145.     ins("bchg", X_BCHG),
  146.     ins("bclr", X_BCLR),
  147.     ins("bset", X_BSET),
  148.     ins("btst", X_BTST)
  149.     end_h;
  150.  
  151. #define b5_n 1
  152.     header(b5_tab, b5_n)
  153.     key("break", K_BREAK)
  154.     end_h;
  155.  
  156.     table(b_tab, 3)
  157.     sub_tab(b3_tab, 3, b3_n),
  158.     sub_tab(b4_tab, 4, b4_n),
  159.     sub_tab(b5_tab, 5, b5_n),
  160.     end_tab;
  161.  
  162. /* ----- C TABLE ------ */
  163. #define c3_n 4
  164.     header(c3_tab, c3_n)
  165.     greg("ccr", R_CCR),
  166.     ins("chk", X_CHK),
  167.     ins("clr", X_CLR),
  168.     ins("cmp", X_CMP)
  169.     end_h;
  170.  
  171. #define c4_n 5
  172.     header(c4_tab, c4_n)
  173.     key("case", K_CASE),
  174.     key("char", K_CHAR),
  175.     ins("cmpa", X_CMPA),
  176.     ins("cmpi", X_CMPI),
  177.     ins("cmpm", X_CMPM),
  178.     end_h;
  179.  
  180. #define c5_n 1
  181.     header(c5_tab, c5_n)
  182.     key("const", K_CONST)
  183.     end_h;
  184.  
  185. #define c8_n 1
  186.     header(c8_tab, c8_n)
  187.     key("continue", K_CONTINUE)
  188.     end_h;
  189.  
  190.     table(c_tab, 4)
  191.     sub_tab(c3_tab, 3, c3_n),
  192.     sub_tab(c4_tab, 4, c4_n),
  193.     sub_tab(c5_tab, 5, c5_n),
  194.     sub_tab(c8_tab, 8, c8_n),
  195.     end_tab;
  196.  
  197. /* ----- D TABLE ----- */
  198. #define d2_n 11
  199.     header(d2_tab, d2_n)
  200.     dreg("d0", R_D0),
  201.     dreg("d1", R_D1),
  202.     dreg("d2", R_D2),
  203.     dreg("d3", R_D3),
  204.     dreg("d4", R_D4),
  205.     dreg("d5", R_D5),
  206.     dreg("d6", R_D6),
  207.     dreg("d7", R_D7),
  208.     pseudo("dc", Z_DC),
  209.     key("do",    K_DO),
  210.     pseudo("ds", Z_DS)
  211.     end_h;
  212.  
  213. #define d3_n 24
  214.     header(d3_tab, d3_n)
  215.  
  216.     dreg("d0b", R_D0B),
  217.     dreg("d1b", R_D1B),
  218.     dreg("d2b", R_D2B),
  219.     dreg("d3b", R_D3B),
  220.     dreg("d4b", R_D4B),
  221.     dreg("d5b", R_D5B),
  222.     dreg("d6b", R_D6B),
  223.     dreg("d7b", R_D7B),
  224.     dreg("d0w", R_D0W),
  225.     dreg("d1w", R_D1W),
  226.  
  227.     dreg("d2w", R_D2W),
  228.     dreg("d3w", R_D3W),
  229.     dreg("d4w", R_D4W),
  230.     dreg("d5w", R_D5W),
  231.     dreg("d6w", R_D6W),
  232.     dreg("d7w", R_D7W),
  233.     ins("dbf", X_DBF),
  234.     ins("dbt", X_DBT),
  235.     pseudo("dcb", Z_DCB),
  236.     pseudo("dcl", Z_DCL),
  237.  
  238.     pseudo("dcw", Z_DCW),
  239.     pseudo("dsb", Z_DSB),
  240.     pseudo("dsl", Z_DSL),
  241.     pseudo("dsw", Z_DSW)
  242.     end_h;
  243.  
  244. #define d4_n 19
  245.     header(d4_tab, d4_n)
  246.  
  247.     pseudo("data", Z_DATA),
  248.     ins("dbcc", X_DBCC),
  249.     ins("dbcs", X_DBCS),
  250.     ins("dbeq", X_DBEQ),
  251.     ins("dbge", X_DBGE),
  252.     ins("dbgt", X_DBGT),
  253.     ins("dbhi", X_DBHI),
  254.     ins("dble", X_DBLE),
  255.     ins("dblo", X_DBLO),
  256.     ins("dbls", X_DBLS),
  257.  
  258.     ins("dblt", X_DBLT),
  259.     ins("dbmi", X_DBMI),
  260.     ins("dbne", X_DBNE),
  261.     ins("dbpl", X_DBPL),
  262.     ins("dbra", X_DBRA),
  263.     ins("dbvc", X_DBVC),
  264.     ins("dbvs", X_DBVS),
  265.     ins("divs", X_DIVS),
  266.     ins("divu", X_DIVU)
  267.     end_h;
  268.  
  269. #define d6_n 1
  270.     header(d6_tab, d6_n)
  271.     key("double", K_DOUBLE)
  272.     end_h;
  273.  
  274. #define d7_n 1
  275.     header(d7_tab, d7_n)
  276.     key("default", K_DEFAULT)
  277.     end_h;
  278.  
  279.     table(d_tab, 5)
  280.     sub_tab(d2_tab, 2, d2_n),
  281.     sub_tab(d3_tab, 3, d3_n),
  282.     sub_tab(d4_tab, 4, d4_n),
  283.     sub_tab(d6_tab, 6, d6_n),
  284.     sub_tab(d7_tab, 7, d7_n),
  285.     end_tab;
  286.  
  287. /* ----- E TABLE ----- */
  288. #define e3_n 3
  289.     header(e3_tab, e3_n)
  290.     ins("eor", X_EOR),
  291.     ins("exg", X_EXG),
  292.     ins("ext", X_EXT)
  293.     end_h;
  294.  
  295. #define e4_n 2
  296.     header(e4_tab, e4_n)
  297.     key("else", K_ELSE),
  298.     ins("eori", X_EORI)
  299.     end_h;
  300.  
  301. #define e5_n 1
  302.     header(e5_tab, e5_n)
  303.     key("entry", K_ENTRY)
  304.     end_h;
  305.  
  306. #define e6_n 1
  307.     header(e6_tab, e6_n)
  308.     key("extern", K_EXTERN)
  309.     end_h;
  310.  
  311.     table(e_tab, 4)
  312.     sub_tab(e3_tab, 3, e3_n),
  313.     sub_tab(e4_tab, 4, e4_n),
  314.     sub_tab(e5_tab, 5, e5_n),
  315.     sub_tab(e6_tab, 6, e6_n),
  316.     end_tab;
  317.  
  318. /* ----- F TABLE ----- */
  319. #define f3_n 1
  320.     header(f3_tab, f3_n)
  321.     key("for", K_FOR)
  322.     end_h;
  323.  
  324. #define f5_n 1
  325.     header(f5_tab, f5_n)
  326.     key("float", K_FLOAT)
  327.     end_h;
  328.  
  329.     table(f_tab, 2)
  330.     sub_tab(f3_tab, 3, f3_n),
  331.     sub_tab(f5_tab, 5, f5_n),
  332.     end_tab;
  333.  
  334. /* ----- G TABLE ----- */
  335. #define g4_n 1
  336.     header(g4_tab, g4_n)
  337.     key("goto", K_GOTO)
  338.     end_h;
  339.  
  340.     table(g_tab, 1)
  341.     sub_tab(g4_tab, 4, g4_n),
  342.     end_tab;
  343.  
  344. /* ----- I TABLE ----- */
  345. #define i2_n 1
  346.     header(i2_tab, i2_n)
  347.     key("if", K_IF)
  348.     end_h;
  349.  
  350. #define i3_n 1
  351.     header(i3_tab, i3_n)
  352.     key("int", K_INT)
  353.     end_h;
  354.  
  355.     table(i_tab, 2)
  356.     sub_tab(i2_tab, 2, i2_n),
  357.     sub_tab(i3_tab, 3, i3_n),
  358.     end_tab;
  359.  
  360. /* ----- J TABLE ----- */
  361. #define j3_n 2
  362.     header(j3_tab, j3_n)
  363.     ins("jmp", X_JMP),
  364.     ins("jsr", X_JSR)
  365.     end_h;
  366.  
  367.     table(j_tab, 1)
  368.     sub_tab(j3_tab, 3, j3_n),
  369.     end_tab;
  370.  
  371. /* ----- L TABLE ----- */
  372. #define l3_n 3
  373.     header(l3_tab, l3_n)
  374.     ins("lea", X_LEA),
  375.     ins("lsl", X_LSL),
  376.     ins("lsr", X_LSR)
  377.     end_h;
  378.  
  379. #define l4_n 2
  380.     header(l4_tab, l4_n)
  381.     ins("link", X_LINK),
  382.     key("long", K_LONG)
  383.     end_h;
  384.  
  385.     table(l_tab, 2)
  386.     sub_tab(l3_tab, 3, l3_n),
  387.     sub_tab(l4_tab, 4, l4_n),
  388.     end_tab;
  389.  
  390. /* ----- M TABLE ----- */
  391. #define m4_n 4
  392.     header(m4_tab, m4_n)
  393.     ins("move", X_MOVE),
  394.     ins("muls", X_MULS),
  395.     ins("mulu", X_MULU)
  396.     end_h;
  397.  
  398. #define m5_n 4
  399.     header(m5_tab, m5_n)
  400.     ins("movea", X_MOVEA),
  401.     ins("movem", X_MOVEM),
  402.     ins("movep", X_MOVEP),
  403.     ins("moveq", X_MOVEQ)
  404.     end_h;
  405.  
  406.     table(m_tab, 2)
  407.     sub_tab(m4_tab, 4, m4_n),
  408.     sub_tab(m5_tab, 5, m5_n),
  409.     end_tab;
  410.  
  411. /* ----- N TABLE ----- */
  412. #define n3_n 3
  413.     header(n3_tab, n3_n)
  414.     ins("neg", X_NEG),
  415.     ins("nop", X_NOP),
  416.     ins("not", X_NOT)
  417.     end_h;
  418.  
  419. #define n4_n 2
  420.     header(n4_tab, n4_n)
  421.     ins("nbcd", X_NBCD),
  422.     ins("negx", X_NEGX)
  423.     end_h;
  424.  
  425. #define n6_n 1
  426.     header(n6_tab, n6_n)
  427.     pseudo("nobase", Z_NOBASE)
  428.     end_h;
  429.  
  430.     table(n_tab, 3)
  431.     sub_tab(n3_tab, 3, n3_n),
  432.     sub_tab(n4_tab, 4, n4_n),
  433.     sub_tab(n6_tab, 6, n6_n),
  434.     end_tab;
  435.  
  436. /* ----- O TABLE ----- */
  437. #define o2_n 1
  438.     header(o2_tab, o2_n)
  439.     ins("or", X_OR)
  440.     end_h;
  441.  
  442. #define o3_n 2
  443.     header(o3_tab, o3_n)
  444.     pseudo("org", Z_ORG),
  445.     ins("ori", X_ORI)
  446.     end_h;
  447.  
  448.     table(o_tab, 2)
  449.     sub_tab(o2_tab, 2, o2_n),
  450.     sub_tab(o3_tab, 3, o3_n),
  451.     end_tab;
  452.  
  453. /* ----- P TABLE ----- */
  454. #define p2_n 1
  455.     header(p2_tab, p2_n)
  456.     greg("pc", R_PC)
  457.     end_h;
  458.  
  459. #define p3_n 2
  460.     header(p3_tab, p3_n)
  461.     ins("pea", X_PEA),
  462.     pseudo("pop", Z_POP)
  463.     end_h;
  464.  
  465. #define p4_n 1
  466.     header(p4_tab, p4_n)
  467.     pseudo("push", Z_PUSH)
  468.     end_h;
  469.  
  470.     table(p_tab, 3)
  471.     sub_tab(p2_tab, 2, p2_n),
  472.     sub_tab(p3_tab, 3, p3_n),
  473.     sub_tab(p4_tab, 4, p4_n),
  474.     end_tab;
  475.  
  476. /* ----- R TABLE ----- */
  477. #define r2_n 10
  478.     header(r2_tab, r2_n)
  479.     dreg("r0", R_D0),
  480.     dreg("r1", R_D1),
  481.     dreg("r2", R_D2),
  482.     dreg("r3", R_D3),
  483.     dreg("r4", R_D4),
  484.     dreg("r5", R_D5),
  485.     dreg("r6", R_D6),
  486.     dreg("r7", R_D7),
  487.     areg("r8", R_A0),
  488.     areg("r9", R_A1)
  489.     end_h;
  490.  
  491. #define r3_n 29
  492.     header(r3_tab, r3_n)
  493.  
  494.     areg("r10", R_A2),
  495.     areg("r11", R_A3),
  496.     areg("r12", R_A4),
  497.     areg("r13", R_A5),
  498.     areg("r14", R_A6),
  499.     areg("r15", R_A7),
  500.     dreg("r0b", R_D0B),
  501.     dreg("r1b", R_D1B),
  502.     dreg("r2b", R_D2B),
  503.     dreg("r3b", R_D3B),
  504.  
  505.     dreg("r4b", R_D4B),
  506.     dreg("r5b", R_D5B),
  507.     dreg("r6b", R_D6B),
  508.     dreg("r7b", R_D7B),
  509.     dreg("r0w", R_D0W),
  510.     dreg("r1w", R_D1W),
  511.     dreg("r2w", R_D2W),
  512.     dreg("r3w", R_D3W),
  513.     dreg("r4w", R_D4W),
  514.     dreg("r5w", R_D5W),
  515.  
  516.     dreg("r6w", R_D6W),
  517.     dreg("r7w", R_D7W),
  518.     areg("r8w", R_A0W),
  519.     areg("r9w", R_A1W),
  520.     ins("rol", X_ROL),
  521.     ins("ror", X_ROR),
  522.     ins("rte", X_RTE),
  523.     ins("rtr", X_RTR),
  524.     ins("rts", X_RTS)
  525.     end_h;
  526.  
  527. #define r4_n 8
  528.     header(r4_tab, r4_n)
  529.     areg("r10w", R_A2W),
  530.     areg("r11w", R_A3W),
  531.     areg("r12w", R_A4W),
  532.     areg("r13w", R_A5W),
  533.     areg("r14w", R_A6W),
  534.     areg("r15w", R_A7W),
  535.     ins("roxl", X_ROXL),
  536.     ins("roxr", X_ROXR)
  537.     end_h;
  538.  
  539. #define r5_n 1
  540.     header(r5_tab, r5_n)
  541.     ins("reset", X_RESET)
  542.     end_h;
  543.  
  544. #define r6_n 1
  545.     header(r6_tab, r6_n)
  546.     key("return", K_RETURN)
  547.     end_h;
  548.  
  549. #define r8_n 1
  550.     header(r8_tab, r8_n)
  551.     key("register", K_REGISTER)
  552.     end_h;
  553.  
  554.     table(r_tab, 5)
  555.     sub_tab(r2_tab, 2, r2_n),
  556.     sub_tab(r3_tab, 3, r3_n),
  557.     sub_tab(r5_tab, 5, r5_n),
  558.     sub_tab(r6_tab, 6, r6_n),
  559.     sub_tab(r8_tab, 8, r8_n),
  560.     end_tab;
  561.  
  562. /* ----- S TABLE ----- */
  563. #define s2_n 4
  564.     header(s2_tab, s2_n)
  565.     ins("sf", X_SF),
  566.     areg("sp", R_A7),
  567.     greg("sr", R_SR),
  568.     ins("st", X_ST)
  569.     end_h;
  570.  
  571. #define s3_n 17
  572.     header(s3_tab, s3_n)
  573.  
  574.     ins("scc", X_SCC),
  575.     ins("scs", X_SCS),
  576.     ins("seq", X_SEQ),
  577.     ins("sge", X_SGE),
  578.     ins("sgt", X_SGT),
  579.     ins("shi", X_SHI),
  580.     ins("sle", X_SLE),
  581.     ins("slo", X_SLO),
  582.     ins("sls", X_SLS),
  583.     ins("slt", X_SLT),
  584.  
  585.     ins("smi", X_SMI),
  586.     ins("sne", X_SNE),
  587.     ins("spl", X_SPL),
  588.     areg("spw", R_A7W),
  589.     ins("sub", X_SUB),
  590.     ins("svc", X_SVC),
  591.     ins("svs", X_SVS)
  592.     end_h;
  593.  
  594. #define s4_n 7
  595.     header(s4_tab, s4_n)
  596.     ins("sbcd", X_SBCD),
  597.     ins("stop", X_STOP),
  598.     ins("suba", X_SUBA),
  599.     ins("subi", X_SUBI),
  600.     ins("subq", X_SUBQ),
  601.     ins("subx", X_SUBX),
  602.     ins("swap", X_SWAP)
  603.     end_h;
  604.  
  605. #define s5_n 2
  606.     header(s5_tab, s5_n)
  607.     key("short", K_SHORT),
  608.     pseudo("subsp", Z_SUBSP)
  609.     end_h;
  610.  
  611. #define s6_n 6
  612.     header(s6_tab, s6_n)
  613.     key("signed", K_SIGNED),
  614.     key("sizeof", K_SIZEOF),
  615.     key("static", K_STATIC),
  616.     pseudo("stbase", Z_BASE),
  617.     key("struct", K_STRUCT),
  618.     key("switch", K_SWITCH)
  619.     end_h;
  620.  
  621.     table(s_tab, 5)
  622.     sub_tab(s2_tab, 2, s2_n),
  623.     sub_tab(s3_tab, 3, s3_n),
  624.     sub_tab(s4_tab, 4, s4_n),
  625.     sub_tab(s5_tab, 5, s5_n),
  626.     sub_tab(s6_tab, 6, s6_n),
  627.     end_tab;
  628.  
  629. /* ----- T TABLE ----- */
  630. #define t3_n 2
  631.     header(t3_tab, t3_n)
  632.     ins("tas", X_TAS),
  633.     ins("tst", X_TST)
  634.     end_h;
  635.  
  636. #define t4_n 2
  637.     header(t4_tab, t4_n)
  638.     pseudo("text", Z_TEXT),
  639.     ins("trap", X_TRAP)
  640.     end_h;
  641.  
  642. #define t5_n 1
  643.     header(t5_tab, t5_n)
  644.     ins("trapv", X_TRAPV)
  645.     end_h;
  646.  
  647. #define t7_n 1
  648.     header(t7_tab, t7_n)
  649.     key("typedef", K_TYPEDEF)
  650.     end_h;
  651.  
  652.     table(t_tab, 4)
  653.     sub_tab(t3_tab, 3, t3_n),
  654.     sub_tab(t4_tab, 4, t4_n),
  655.     sub_tab(t5_tab, 5, t5_n),
  656.     sub_tab(t7_tab, 7, t7_n),
  657.     end_tab;
  658.  
  659. /* ----- U TABLE ----- */
  660. #define u3_n 1
  661.     header(u3_tab, u3_n)
  662.     areg("usp", R_USP)
  663.     end_h;
  664.  
  665. #define u4_n 1
  666.     header(u4_tab, u4_n)
  667.     ins("unlk", X_UNLK)
  668.     end_h;
  669.  
  670. #define u5_n 1
  671.     header(u5_tab, u5_n)
  672.     key("union", K_UNION)
  673.     end_h;
  674.  
  675. #define u8_n 1
  676.     header(u8_tab, u8_n)
  677.     key("unsigned", K_UNSIGNED)
  678.     end_h;
  679.  
  680.     table(u_tab, 4)
  681.     sub_tab(u3_tab, 3, u3_n),
  682.     sub_tab(u4_tab, 4, u4_n),
  683.     sub_tab(u5_tab, 5, u5_n),
  684.     sub_tab(u8_tab, 8, u8_n),
  685.     end_tab;
  686.  
  687. /* ----- V TABLE ----- */
  688. #define v4_n 1
  689.     header(v4_tab, v4_n)
  690.     key("void", K_VOID)
  691.     end_h;
  692.  
  693. #define v8_n 1
  694.     header(v8_tab, v8_n)
  695.     key("volatile", K_VOLATILE)
  696.     end_h;
  697.  
  698.     table(v_tab, 2)
  699.     sub_tab(v4_tab, 4, v4_n),
  700.     sub_tab(v8_tab, 8, v8_n),
  701.     end_tab;
  702.  
  703. /* ----- W TABLE ----- */
  704. #define w5_n 1
  705.     header(w5_tab, w5_n)
  706.     key("while", K_WHILE)
  707.     end_h;
  708.  
  709.     table(w_tab, 1)
  710.     sub_tab(w5_tab, 5, w5_n),
  711.     end_tab;
  712. /*
  713.     Upper case table (for condition code constants).
  714. */
  715. #define uc1_n 1
  716.     header(uc1_tab, uc1_n)
  717.     cc_code("C", CC_CS)
  718.     end_h;
  719.  
  720. #define uc2_n 2
  721.     header(uc2_tab, uc2_n)
  722.     cc_code("CC", CC_CC),
  723.     cc_code("CS", CC_CS)
  724.     end_h;
  725.  
  726.     table(uc_tab, 2)
  727.     sub_tab(uc1_tab, 1, uc1_n),
  728.     sub_tab(uc2_tab, 2, uc2_n),
  729.     end_tab;
  730.  
  731. #define ue2_n 1
  732.     header(ue2_tab, ue2_n)
  733.     cc_code("EQ", CC_EQ)
  734.     end_h;
  735.  
  736.     table(ue_tab, 1)
  737.     sub_tab(ue2_tab, 2, ue2_n),
  738.     end_tab;
  739.  
  740. #define uf1_n 1
  741.     header(uf1_tab, uf1_n)
  742.     cc_code("F", CC_F)
  743.     end_h;
  744.  
  745.     table(uf_tab, 1)
  746.     sub_tab(uf1_tab, 1, uf1_n),
  747.     end_tab;
  748.  
  749. #define ug2_n 2
  750.     header(ug2_tab, ug2_n)
  751.     cc_code("GE", CC_GE),
  752.     cc_code("GT", CC_GT)
  753.     end_h;
  754.  
  755.     table(ug_tab, 1)
  756.     sub_tab(ug2_tab, 2, ug2_n),
  757.     end_tab;
  758.  
  759. #define uh2_n 1
  760.     header(uh2_tab, uh2_n)
  761.     cc_code("HI", CC_HI)
  762.     end_h;
  763.  
  764.     table(uh_tab, 1)
  765.     sub_tab(uh2_tab, 2, uh2_n),
  766.     end_tab;
  767.  
  768. #define ul2_n 4
  769.     header(ul2_tab, ul2_n)
  770.     cc_code("LE", CC_LE),
  771.     cc_code("LS", CC_LS),
  772.     cc_code("LT", CC_LT),
  773.     cc_code("LO", CC_LO)
  774.     end_h;
  775.  
  776.     table(ul_tab, 1)
  777.     sub_tab(ul2_tab, 2, ul2_n),
  778.     end_tab;
  779.  
  780. #define um2_n 1
  781.     header(um2_tab, um2_n)
  782.     cc_code("MI", CC_MI)
  783.     end_h;
  784.  
  785.     table(um_tab, 1)
  786.     sub_tab(um2_tab, 2, um2_n),
  787.     end_tab;
  788.  
  789. #define un2_n 4
  790.     header(un2_tab, un2_n)
  791.     cc_code("NC", CC_CC),
  792.     cc_code("NE", CC_NE),
  793.     cc_code("NV", CC_VC),
  794.     cc_code("NZ", CC_NE)
  795.     end_h;
  796.  
  797.     table(un_tab, 1)
  798.     sub_tab(un2_tab, 2, un2_n),
  799.     end_tab;
  800.  
  801. #define up2_n 1
  802.     header(up2_tab, up2_n)
  803.     cc_code("PL", CC_PL)
  804.     end_h;
  805.  
  806.     table(up_tab, 1)
  807.     sub_tab(up2_tab, 2, up2_n),
  808.     end_tab;
  809.  
  810. #define ut1_n 1
  811.     header(ut1_tab, ut1_n)
  812.     cc_code("T", CC_T)
  813.     end_h;
  814.  
  815.     table(ut_tab, 1)
  816.     sub_tab(ut1_tab, 1, ut1_n),
  817.     end_tab;
  818.  
  819. #define uv1_n 1
  820.     header(uv1_tab, uv1_n)
  821.     cc_code("V", CC_VS)
  822.     end_h;
  823.  
  824. #define uv2_n 2
  825.     header(uv2_tab, uv2_n)
  826.     cc_code("VC", CC_VC),
  827.     cc_code("VS", CC_VS)
  828.     end_h;
  829.  
  830.     table(uv_tab, 2)
  831.     sub_tab(uv1_tab, 1, uv1_n),
  832.     sub_tab(uv2_tab, 2, uv2_n),
  833.     end_tab;
  834.  
  835. #define uz1_n 1
  836.     header(uz1_tab, uz1_n)
  837.     cc_code("Z", CC_EQ)
  838.     end_h;
  839.  
  840.     table(uz_tab, 1)
  841.     sub_tab(uz1_tab, 1, uz1_n),
  842.     end_tab;
  843.  
  844. /*
  845.     Indirect reserved word table
  846. */
  847. struct t1_tab_struct * rwx_tab [] = {
  848.     0L,    /* A */
  849.     0L,    /* B */
  850.     uc_tab,
  851.     0L,    /* D */
  852.     ue_tab,
  853.     uf_tab,
  854.     ug_tab,
  855.     uh_tab,
  856.     0L,    /* I */
  857.     0L,    /* J */
  858.     0L,    /* K */
  859.     ul_tab,
  860.     um_tab,
  861.     un_tab,
  862.     0L,    /* O */
  863.     up_tab,
  864.     0L,    /* Q */
  865.     0L,    /* R */
  866.     0L,    /* S */
  867.     ut_tab,
  868.     0L,    /* U */
  869.     uv_tab,
  870.     0L,    /* W */
  871.     0L,    /* X */
  872.     0L,    /* Y */
  873.     uz_tab,
  874.  
  875.     0L,    /* [ */
  876.     0L,    /* \ */
  877.     0L,    /* ] */
  878.     0L,    /* ^ */
  879.     0L,    /* ; */
  880.     0L,    /* single quote */
  881.  
  882.     a_tab,
  883.     b_tab,
  884.     c_tab,
  885.     d_tab,
  886.     e_tab,
  887.     f_tab,
  888.     g_tab,
  889.     0L,    /* h */
  890.     i_tab,
  891.     j_tab,
  892.     0L,    /* k */
  893.     l_tab,
  894.     m_tab,
  895.     n_tab,
  896.     o_tab,
  897.     p_tab,
  898.     0L,    /* q */
  899.     r_tab,
  900.     s_tab,
  901.     t_tab,
  902.     u_tab,
  903.     v_tab,    /* v */
  904.     w_tab,
  905.     0L,    /* x */
  906.     0L,    /* y */
  907.     0L    /* z */
  908. };
  909.