1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-08-02 09:29:35 +00:00

Added asm names to symbol table printout.

This commit is contained in:
jespergravgaard 2017-10-17 09:39:15 +02:00
parent 5de6bbba13
commit 1f4efe0a4f
38 changed files with 93 additions and 88 deletions

View File

@ -57,6 +57,7 @@ Process/Code Structure Improvement
+ Make each phase return a separate object graph (allowing for keeeping the history in memory & performing rollbacks)
Testing
- Test single passes by configuring compiler to only log ICL before & after the tested step!
- Implement ICL syntax (printer & parser). Drop the JSON.
- Test that the parse tree for specific KC syntax is as expected. Use a print function for the parse tree to generate output for comparison.
- Test the ICL result of a specific phase on a specific ICL input. Create an ICL syntax for parsing directly to ICL and a printer for the syntax.

View File

@ -316,6 +316,10 @@ public abstract class Scope implements Symbol {
}
if (symbol instanceof ConstantVar) {
ConstantVar constantVar = (ConstantVar) symbol;
String asmName = constantVar.getAsmName();
if (asmName != null) {
res.append(" " + asmName);
}
res.append(" = " + constantVar.getValue().toString(program));
}
res.append("\n");

View File

@ -2060,9 +2060,9 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte[1000]) SCREEN
(const byte[1000]) SCREEN#0 = (word) 1024
(const byte[1000]) SCREEN#0 SCREEN = (word) 1024
(byte) STAR
(const byte) STAR#0 = (byte) 81
(const byte) STAR#0 STAR = (byte) 81
(void()) main()
(label) main::@1
(label) main::@2
@ -2083,18 +2083,18 @@ FINAL SYMBOL TABLE
(byte) main::x#2 x zp ZP_BYTE:4 11.0
(byte) main::x0
(byte) main::x1
(const byte) main::x1#0 = (byte) 39
(const byte) main::x1#0 x1 = (byte) 39
(byte) main::xd
(const byte) main::xd#0 = (const byte) main::x1#0-(byte) 4
(const byte) main::xd#0 xd = (const byte) main::x1#0-(byte) 4
(byte) main::y
(byte) main::y#1 y zp ZP_BYTE:5 7.333333333333333
(byte) main::y#2 y zp ZP_BYTE:5 5.5
(byte) main::y#4 y zp ZP_BYTE:5 16.5
(byte) main::y0
(byte) main::y1
(const byte) main::y1#0 = (byte) 24
(const byte) main::y1#0 y1 = (byte) 24
(byte) main::yd
(const byte) main::yd#0 = (const byte) main::y1#0-(byte) 4
(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte) 4
zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ]
zp ZP_BYTE:4 [ main::x#2 main::x#1 ]

View File

@ -1,9 +1,9 @@
(label) @begin
(label) @end
(byte[1000]) SCREEN
(const byte[1000]) SCREEN#0 = (word) 1024
(const byte[1000]) SCREEN#0 SCREEN = (word) 1024
(byte) STAR
(const byte) STAR#0 = (byte) 81
(const byte) STAR#0 STAR = (byte) 81
(void()) main()
(label) main::@1
(label) main::@2
@ -24,18 +24,18 @@
(byte) main::x#2 x zp ZP_BYTE:4 11.0
(byte) main::x0
(byte) main::x1
(const byte) main::x1#0 = (byte) 39
(const byte) main::x1#0 x1 = (byte) 39
(byte) main::xd
(const byte) main::xd#0 = (const byte) main::x1#0-(byte) 4
(const byte) main::xd#0 xd = (const byte) main::x1#0-(byte) 4
(byte) main::y
(byte) main::y#1 y zp ZP_BYTE:5 7.333333333333333
(byte) main::y#2 y zp ZP_BYTE:5 5.5
(byte) main::y#4 y zp ZP_BYTE:5 16.5
(byte) main::y0
(byte) main::y1
(const byte) main::y1#0 = (byte) 24
(const byte) main::y1#0 y1 = (byte) 24
(byte) main::yd
(const byte) main::yd#0 = (const byte) main::y1#0-(byte) 4
(const byte) main::yd#0 yd = (const byte) main::y1#0-(byte) 4
zp ZP_PTR_BYTE:2 [ main::cursor#3 main::cursor#5 main::cursor#1 main::cursor#2 ]
zp ZP_BYTE:4 [ main::x#2 main::x#1 ]

View File

@ -1669,7 +1669,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte) STAR
(const byte) STAR#0 = (byte) 81
(const byte) STAR#0 STAR = (byte) 81
(byte) e
(byte) e#1 reg byte y 11.0
(byte) e#2 reg byte y 22.0
@ -1681,24 +1681,24 @@ FINAL SYMBOL TABLE
(word) idx#3 idx zp ZP_WORD:2 11.0
(word) idx#5 idx zp ZP_WORD:2 16.5
(byte[1000]) screen
(const byte[1000]) screen#0 = (word) 1024
(const byte[1000]) screen#0 screen = (word) 1024
(byte) x
(byte) x#1 reg byte x 3.666666666666667
(byte) x#2 reg byte x 11.0
(byte) x0
(byte) x1
(const byte) x1#0 = (byte) 39
(const byte) x1#0 x1 = (byte) 39
(byte) xd
(const byte) xd#0 = (const byte) x1#0-(byte) 0
(const byte) xd#0 xd = (const byte) x1#0-(byte) 0
(byte) y
(byte) y#1 y zp ZP_BYTE:4 7.333333333333333
(byte) y#2 y zp ZP_BYTE:4 5.5
(byte) y#4 y zp ZP_BYTE:4 16.5
(byte) y0
(byte) y1
(const byte) y1#0 = (byte) 24
(const byte) y1#0 y1 = (byte) 24
(byte) yd
(const byte) yd#0 = (const byte) y1#0-(byte) 0
(const byte) yd#0 yd = (const byte) y1#0-(byte) 0
zp ZP_WORD:2 [ idx#3 idx#5 idx#1 idx#2 ]
reg byte x [ x#2 x#1 ]

View File

@ -4,7 +4,7 @@
(label) @begin
(label) @end
(byte) STAR
(const byte) STAR#0 = (byte) 81
(const byte) STAR#0 STAR = (byte) 81
(byte) e
(byte) e#1 reg byte y 11.0
(byte) e#2 reg byte y 22.0
@ -16,24 +16,24 @@
(word) idx#3 idx zp ZP_WORD:2 11.0
(word) idx#5 idx zp ZP_WORD:2 16.5
(byte[1000]) screen
(const byte[1000]) screen#0 = (word) 1024
(const byte[1000]) screen#0 screen = (word) 1024
(byte) x
(byte) x#1 reg byte x 3.666666666666667
(byte) x#2 reg byte x 11.0
(byte) x0
(byte) x1
(const byte) x1#0 = (byte) 39
(const byte) x1#0 x1 = (byte) 39
(byte) xd
(const byte) xd#0 = (const byte) x1#0-(byte) 0
(const byte) xd#0 xd = (const byte) x1#0-(byte) 0
(byte) y
(byte) y#1 y zp ZP_BYTE:4 7.333333333333333
(byte) y#2 y zp ZP_BYTE:4 5.5
(byte) y#4 y zp ZP_BYTE:4 16.5
(byte) y0
(byte) y1
(const byte) y1#0 = (byte) 24
(const byte) y1#0 y1 = (byte) 24
(byte) yd
(const byte) yd#0 = (const byte) y1#0-(byte) 0
(const byte) yd#0 yd = (const byte) y1#0-(byte) 0
zp ZP_WORD:2 [ idx#3 idx#5 idx#1 idx#2 ]
reg byte x [ x#2 x#1 ]

View File

@ -893,15 +893,15 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 = (const byte*) VIC#0+(byte) 16*(byte) 2+(byte) 1
(const byte*) BGCOL#0 BGCOL = (const byte*) VIC#0+(byte) 16*(byte) 2+(byte) 1
(byte) RED
(const byte) RED#0 = (byte) 2
(const byte) RED#0 RED = (byte) 2
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(byte) STAR
(const byte) STAR#0 = (byte) 81
(const byte) STAR#0 STAR = (byte) 81
(byte*) VIC
(const byte*) VIC#0 = (word) 53248
(const byte*) VIC#0 VIC = (word) 53248
(void()) main()
(label) main::@1
(label) main::@return

View File

@ -1,15 +1,15 @@
(label) @begin
(label) @end
(byte*) BGCOL
(const byte*) BGCOL#0 = (const byte*) VIC#0+(byte) 16*(byte) 2+(byte) 1
(const byte*) BGCOL#0 BGCOL = (const byte*) VIC#0+(byte) 16*(byte) 2+(byte) 1
(byte) RED
(const byte) RED#0 = (byte) 2
(const byte) RED#0 RED = (byte) 2
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(byte) STAR
(const byte) STAR#0 = (byte) 81
(const byte) STAR#0 STAR = (byte) 81
(byte*) VIC
(const byte*) VIC#0 = (word) 53248
(const byte*) VIC#0 VIC = (word) 53248
(void()) main()
(label) main::@1
(label) main::@return

View File

@ -941,7 +941,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte[15]) fibs
(const byte[15]) fibs#0 = (word) 4352
(const byte[15]) fibs#0 fibs = (word) 4352
(void()) main()
(byte~) main::$1 reg byte a 11.0
(byte~) main::$3 reg byte alu 22.0

View File

@ -1,7 +1,7 @@
(label) @begin
(label) @end
(byte[15]) fibs
(const byte[15]) fibs#0 = (word) 4352
(const byte[15]) fibs#0 fibs = (word) 4352
(void()) main()
(byte~) main::$1 reg byte a 11.0
(byte~) main::$3 reg byte alu 22.0

View File

@ -6065,13 +6065,13 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) RASTER
(const byte*) RASTER#0 = (word) 53266
(const byte*) RASTER#0 RASTER = (word) 53266
(byte[1000]) SCREEN
(const byte[1000]) SCREEN#0 = (word) 1024
(const byte[1000]) SCREEN#0 SCREEN = (word) 1024
(byte[256]) buffer1
(const byte[256]) buffer1#0 = (word) 4096
(const byte[256]) buffer1#0 buffer1 = (word) 4096
(byte[256]) buffer2
(const byte[256]) buffer2#0 = (word) 4352
(const byte[256]) buffer2#0 buffer2 = (word) 4352
(void()) flip()
(byte~) flip::$0 reg byte a 2002.0
(byte~) flip::$4 reg byte a 202.0

View File

@ -1,13 +1,13 @@
(label) @begin
(label) @end
(byte*) RASTER
(const byte*) RASTER#0 = (word) 53266
(const byte*) RASTER#0 RASTER = (word) 53266
(byte[1000]) SCREEN
(const byte[1000]) SCREEN#0 = (word) 1024
(const byte[1000]) SCREEN#0 SCREEN = (word) 1024
(byte[256]) buffer1
(const byte[256]) buffer1#0 = (word) 4096
(const byte[256]) buffer1#0 buffer1 = (word) 4096
(byte[256]) buffer2
(const byte[256]) buffer2#0 = (word) 4352
(const byte[256]) buffer2#0 buffer2 = (word) 4352
(void()) flip()
(byte~) flip::$0 reg byte a 2002.0
(byte~) flip::$4 reg byte a 202.0

View File

@ -693,7 +693,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(void()) main()
(label) main::@1
(label) main::@return

View File

@ -2,7 +2,7 @@
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(void()) main()
(label) main::@1
(label) main::@return

View File

@ -1081,9 +1081,9 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN1
(const byte*) SCREEN1#0 = (word) 1024
(const byte*) SCREEN1#0 SCREEN1 = (word) 1024
(byte*) SCREEN2
(const byte*) SCREEN2#0 = (word) 1280
(const byte*) SCREEN2#0 SCREEN2 = (word) 1280
(void()) main()
(label) main::@1
(label) main::@2

View File

@ -2,9 +2,9 @@
(label) @begin
(label) @end
(byte*) SCREEN1
(const byte*) SCREEN1#0 = (word) 1024
(const byte*) SCREEN1#0 SCREEN1 = (word) 1024
(byte*) SCREEN2
(const byte*) SCREEN2#0 = (word) 1280
(const byte*) SCREEN2#0 SCREEN2 = (word) 1280
(void()) main()
(label) main::@1
(label) main::@2

View File

@ -869,7 +869,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(void()) main()
(label) main::@1
(label) main::@2

View File

@ -1,7 +1,7 @@
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(void()) main()
(label) main::@1
(label) main::@2

View File

@ -760,7 +760,7 @@ FINAL SYMBOL TABLE
(label) main::@1
(label) main::@return
(byte[16]) main::buf
(const byte[16]) main::buf#0 = (word) 4352
(const byte[16]) main::buf#0 buf = (word) 4352
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 14.666666666666666

View File

@ -5,7 +5,7 @@
(label) main::@1
(label) main::@return
(byte[16]) main::buf
(const byte[16]) main::buf#0 = (word) 4352
(const byte[16]) main::buf#0 buf = (word) 4352
(byte) main::i
(byte) main::i#1 reg byte x 16.5
(byte) main::i#2 reg byte x 14.666666666666666

View File

@ -1128,7 +1128,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(void()) main()
(label) main::@1
(label) main::@3

View File

@ -1,7 +1,7 @@
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(void()) main()
(label) main::@1
(label) main::@3

View File

@ -2729,7 +2729,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(void()) main()
(label) main::@1
(label) main::@2

View File

@ -1,7 +1,7 @@
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(void()) main()
(label) main::@1
(label) main::@2

View File

@ -1195,7 +1195,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte[256]) SCREEN
(const byte[256]) SCREEN#0 = (word) 1024
(const byte[256]) SCREEN#0 SCREEN = (word) 1024
(byte) cnt
(byte) cnt#1 reg byte x 0.75
(byte) cnt#12 reg byte x 4.0

View File

@ -1,7 +1,7 @@
(label) @begin
(label) @end
(byte[256]) SCREEN
(const byte[256]) SCREEN#0 = (word) 1024
(const byte[256]) SCREEN#0 SCREEN = (word) 1024
(byte) cnt
(byte) cnt#1 reg byte x 0.75
(byte) cnt#12 reg byte x 4.0

View File

@ -845,7 +845,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte[256]) SCREEN
(const byte[256]) SCREEN#0 = (word) 1024
(const byte[256]) SCREEN#0 SCREEN = (word) 1024
(byte) cnt
(byte) cnt#1 reg byte x 4.0
(byte) cnt#10 reg byte x 1.6

View File

@ -1,7 +1,7 @@
(label) @begin
(label) @end
(byte[256]) SCREEN
(const byte[256]) SCREEN#0 = (word) 1024
(const byte[256]) SCREEN#0 SCREEN = (word) 1024
(byte) cnt
(byte) cnt#1 reg byte x 4.0
(byte) cnt#10 reg byte x 1.6

View File

@ -2926,7 +2926,7 @@ FINAL SYMBOL TABLE
(label) lvalue::@2
(label) lvalue::@return
(byte[1024]) lvalue::SCREEN
(const byte[1024]) lvalue::SCREEN#0 = (word) 1024
(const byte[1024]) lvalue::SCREEN#0 SCREEN = (word) 1024
(byte) lvalue::i
(byte) lvalue::i#1 reg byte x 22.0
(byte) lvalue::i#2 reg byte x 14.666666666666666
@ -2935,7 +2935,7 @@ FINAL SYMBOL TABLE
(label) lvaluevar::@2
(label) lvaluevar::@return
(byte) lvaluevar::b
(const byte) lvaluevar::b#0 = (byte) 4
(const byte) lvaluevar::b#0 b = (byte) 4
(byte) lvaluevar::i
(byte) lvaluevar::i#1 reg byte x 22.0
(byte) lvaluevar::i#2 reg byte x 8.25
@ -2952,7 +2952,7 @@ FINAL SYMBOL TABLE
(label) rvalue::@2
(label) rvalue::@return
(byte[1024]) rvalue::SCREEN
(const byte[1024]) rvalue::SCREEN#0 = (word) 1024
(const byte[1024]) rvalue::SCREEN#0 SCREEN = (word) 1024
(byte) rvalue::b
(byte) rvalue::b#0 reg byte a 20.0
(byte) rvalue::b#1 reg byte a 20.0

View File

@ -5,7 +5,7 @@
(label) lvalue::@2
(label) lvalue::@return
(byte[1024]) lvalue::SCREEN
(const byte[1024]) lvalue::SCREEN#0 = (word) 1024
(const byte[1024]) lvalue::SCREEN#0 SCREEN = (word) 1024
(byte) lvalue::i
(byte) lvalue::i#1 reg byte x 22.0
(byte) lvalue::i#2 reg byte x 14.666666666666666
@ -14,7 +14,7 @@
(label) lvaluevar::@2
(label) lvaluevar::@return
(byte) lvaluevar::b
(const byte) lvaluevar::b#0 = (byte) 4
(const byte) lvaluevar::b#0 b = (byte) 4
(byte) lvaluevar::i
(byte) lvaluevar::i#1 reg byte x 22.0
(byte) lvaluevar::i#2 reg byte x 8.25
@ -31,7 +31,7 @@
(label) rvalue::@2
(label) rvalue::@return
(byte[1024]) rvalue::SCREEN
(const byte[1024]) rvalue::SCREEN#0 = (word) 1024
(const byte[1024]) rvalue::SCREEN#0 SCREEN = (word) 1024
(byte) rvalue::b
(byte) rvalue::b#0 reg byte a 20.0
(byte) rvalue::b#1 reg byte a 20.0

View File

@ -699,7 +699,7 @@ FINAL SYMBOL TABLE
(label) main::@2
(label) main::@return
(byte[1024]) main::SCREEN
(const byte[1024]) main::SCREEN#0 = (word) 1024
(const byte[1024]) main::SCREEN#0 SCREEN = (word) 1024
(byte) main::b
(byte) main::b#0 reg byte a 110.0
(byte) main::i

View File

@ -5,7 +5,7 @@
(label) main::@2
(label) main::@return
(byte[1024]) main::SCREEN
(const byte[1024]) main::SCREEN#0 = (word) 1024
(const byte[1024]) main::SCREEN#0 SCREEN = (word) 1024
(byte) main::b
(byte) main::b#0 reg byte a 110.0
(byte) main::i

View File

@ -306,7 +306,7 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(void()) main()
(label) main::@return

View File

@ -1,7 +1,7 @@
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(void()) main()
(label) main::@return

View File

@ -11713,17 +11713,17 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) COLORS
(const byte*) COLORS#0 = (word) 55296
(const byte*) COLORS#0 COLORS = (word) 55296
(byte[256]) COLS
(const byte[256]) COLS#0 = (word) 4608
(const byte[256]) COLS#0 COLS = (word) 4608
(byte) FILL
(const byte) FILL#0 = (byte) 230
(const byte) FILL#0 FILL = (byte) 230
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(byte[256]) XPOS
(const byte[256]) XPOS#0 = (word) 4096
(const byte[256]) XPOS#0 XPOS = (word) 4096
(byte[256]) YPOS
(const byte[256]) YPOS#0 = (word) 4352
(const byte[256]) YPOS#0 YPOS = (word) 4352
(void()) addpoint((byte) addpoint::x , (byte) addpoint::y , (byte) addpoint::c)
(label) addpoint::@return
(byte) addpoint::c

View File

@ -1,17 +1,17 @@
(label) @begin
(label) @end
(byte*) COLORS
(const byte*) COLORS#0 = (word) 55296
(const byte*) COLORS#0 COLORS = (word) 55296
(byte[256]) COLS
(const byte[256]) COLS#0 = (word) 4608
(const byte[256]) COLS#0 COLS = (word) 4608
(byte) FILL
(const byte) FILL#0 = (byte) 230
(const byte) FILL#0 FILL = (byte) 230
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(byte[256]) XPOS
(const byte[256]) XPOS#0 = (word) 4096
(const byte[256]) XPOS#0 XPOS = (word) 4096
(byte[256]) YPOS
(const byte[256]) YPOS#0 = (word) 4352
(const byte[256]) YPOS#0 YPOS = (word) 4352
(void()) addpoint((byte) addpoint::x , (byte) addpoint::y , (byte) addpoint::c)
(label) addpoint::@return
(byte) addpoint::c

View File

@ -1966,9 +1966,9 @@ FINAL SYMBOL TABLE
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(byte*) SCREEN2
(const byte*) SCREEN2#0 = (word) 1024+(byte) 40
(const byte*) SCREEN2#0 SCREEN2 = (word) 1024+(byte) 40
(void()) main()
(byte~) main::$0 reg byte x 7.333333333333333
(byte~) main::$1 reg byte a 7.333333333333333

View File

@ -1,9 +1,9 @@
(label) @begin
(label) @end
(byte*) SCREEN
(const byte*) SCREEN#0 = (word) 1024
(const byte*) SCREEN#0 SCREEN = (word) 1024
(byte*) SCREEN2
(const byte*) SCREEN2#0 = (word) 1024+(byte) 40
(const byte*) SCREEN2#0 SCREEN2 = (word) 1024+(byte) 40
(void()) main()
(byte~) main::$0 reg byte x 7.333333333333333
(byte~) main::$1 reg byte a 7.333333333333333