Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 1 | @Test |
| 2 | public void testFullApfV4ProgramGeneration() throws IllegalInstructionException { |
| 3 | ApfV4Generator gen = new ApfV4Generator(APF_VERSION_4); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 4 | gen.addLoadImmediate(R1, -8); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 5 | gen.addLoadData(R0, 0); |
| 6 | gen.addAdd(1); |
| 7 | gen.addStoreData(R0, 0); |
| 8 | gen.addLoad16(R0, 12); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 9 | gen.addLoadImmediate(R1, -120); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 10 | gen.addJumpIfR0LessThan(0x600, "LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 11 | gen.addLoadImmediate(R1, -124); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 12 | gen.addJumpIfR0Equals(0x88a2, "LABEL_INC_AND_DROP"); |
| 13 | gen.addJumpIfR0Equals(0x88a4, "LABEL_INC_AND_DROP"); |
| 14 | gen.addJumpIfR0Equals(0x88b8, "LABEL_INC_AND_DROP"); |
| 15 | gen.addJumpIfR0Equals(0x88cd, "LABEL_INC_AND_DROP"); |
| 16 | gen.addJumpIfR0Equals(0x88e1, "LABEL_INC_AND_DROP"); |
| 17 | gen.addJumpIfR0Equals(0x88e3, "LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 18 | gen.addJumpIfR0NotEquals(0x806, "LABEL_122"); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 19 | gen.addLoadImmediate(R0, 14); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 20 | gen.addLoadImmediate(R1, -152); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 21 | gen.addJumpIfBytesAtR0NotEqual(hexStringToByteArray("000108000604"), "LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 22 | gen.addLoad16(R0, 20); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 23 | gen.addJumpIfR0Equals(0x1, "LABEL_104"); |
| 24 | gen.addLoadImmediate(R1, -156); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 25 | gen.addJumpIfR0NotEquals(0x2, "LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 26 | gen.addLoad32(R0, 28); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 27 | gen.addLoadImmediate(R1, -128); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 28 | gen.addJumpIfR0Equals(0x0, "LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 29 | gen.addLoadImmediate(R0, 0); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 30 | gen.addLoadImmediate(R1, -56); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 31 | gen.addJumpIfBytesAtR0NotEqual(hexStringToByteArray("ffffffffffff"), "LABEL_INC_AND_PASS"); |
Maciej Żenczykowski | c0726cc | 2024-01-18 18:33:31 -0800 | [diff] [blame] | 32 | |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 33 | gen.defineLabel("LABEL_104"); |
Maciej Żenczykowski | 4b310b1 | 2024-01-22 12:28:12 -0800 | [diff] [blame] | 34 | gen.addLoadImmediate(R0, 38); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 35 | gen.addLoadImmediate(R1, -80); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 36 | gen.addJumpIfBytesAtR0NotEqual(hexStringToByteArray("c0a801ec"), "LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 37 | gen.addLoadImmediate(R1, -20); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 38 | gen.addJump("LABEL_INC_AND_PASS"); |
Maciej Żenczykowski | c0726cc | 2024-01-18 18:33:31 -0800 | [diff] [blame] | 39 | |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 40 | gen.defineLabel("LABEL_122"); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 41 | gen.addLoad16(R0, 12); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 42 | gen.addJumpIfR0NotEquals(0x800, "LABEL_249"); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 43 | gen.addLoad8(R0, 23); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 44 | gen.addJumpIfR0NotEquals(0x11, "LABEL_165"); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 45 | gen.addLoad16(R0, 20); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 46 | gen.addJumpIfR0AnyBitsSet(0x1fff, "LABEL_165"); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 47 | gen.addLoadFromMemory(R1, 13); |
| 48 | gen.addLoad16Indexed(R0, 16); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 49 | gen.addJumpIfR0NotEquals(0x44, "LABEL_165"); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 50 | gen.addLoadImmediate(R0, 50); |
| 51 | gen.addAddR1(); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 52 | gen.addJumpIfBytesAtR0NotEqual(hexStringToByteArray("7e9046bc7008"), "LABEL_165"); |
| 53 | gen.addLoadImmediate(R1, -24); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 54 | gen.addJump("LABEL_INC_AND_PASS"); |
Maciej Żenczykowski | c0726cc | 2024-01-18 18:33:31 -0800 | [diff] [blame] | 55 | |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 56 | gen.defineLabel("LABEL_165"); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 57 | gen.addLoad8(R0, 30); |
| 58 | gen.addAnd(240); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 59 | gen.addLoadImmediate(R1, -96); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 60 | gen.addJumpIfR0Equals(0xe0, "LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 61 | gen.addLoadImmediate(R1, -88); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 62 | gen.addLoad32(R0, 30); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 63 | gen.addJumpIfR0Equals(0xffffffff, "LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 64 | gen.addLoadImmediate(R1, -92); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 65 | gen.addJumpIfR0Equals(0xc0a801ff, "LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 66 | gen.addLoad8(R0, 23); |
| 67 | gen.addJumpIfR0NotEquals(0x6, "LABEL_225"); |
| 68 | gen.addLoad16(R0, 20); |
| 69 | gen.addJumpIfR0AnyBitsSet(0x1fff, "LABEL_225"); |
| 70 | gen.addLoadFromMemory(R1, 13); |
| 71 | gen.addLoad16Indexed(R0, 16); |
| 72 | gen.addJumpIfR0NotEquals(0x7, "LABEL_225"); |
| 73 | gen.addLoadImmediate(R1, -148); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 74 | gen.addJump("LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | c0726cc | 2024-01-18 18:33:31 -0800 | [diff] [blame] | 75 | |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 76 | gen.defineLabel("LABEL_225"); |
| 77 | gen.addLoadImmediate(R1, -36); |
| 78 | gen.addLoadImmediate(R0, 0); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 79 | gen.addJumpIfBytesAtR0NotEqual(hexStringToByteArray("ffffffffffff"), "LABEL_INC_AND_PASS"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 80 | gen.addLoadImmediate(R1, -84); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 81 | gen.addJump("LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 82 | gen.addLoadImmediate(R1, -28); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 83 | gen.addJump("LABEL_INC_AND_PASS"); |
Maciej Żenczykowski | c0726cc | 2024-01-18 18:33:31 -0800 | [diff] [blame] | 84 | |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 85 | gen.defineLabel("LABEL_249"); |
| 86 | gen.addJumpIfR0Equals(0x86dd, "LABEL_273"); |
| 87 | gen.addLoadImmediate(R0, 0); |
| 88 | gen.addLoadImmediate(R1, -60); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 89 | gen.addJumpIfBytesAtR0NotEqual(hexStringToByteArray("ffffffffffff"), "LABEL_INC_AND_PASS"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 90 | gen.addLoadImmediate(R1, -68); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 91 | gen.addJump("LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 92 | |
| 93 | gen.defineLabel("LABEL_273"); |
| 94 | gen.addLoad8(R0, 20); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 95 | gen.addJumpIfR0Equals(0x0, "LABEL_INC_AND_PASS"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 96 | gen.addJumpIfR0Equals(0x3a, "LABEL_297"); |
| 97 | gen.addLoadImmediate(R1, -116); |
| 98 | gen.addLoad8(R0, 38); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 99 | gen.addJumpIfR0Equals(0xff, "LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 100 | gen.addLoadImmediate(R1, -44); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 101 | gen.addJump("LABEL_INC_AND_PASS"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 102 | |
| 103 | gen.defineLabel("LABEL_297"); |
| 104 | gen.addLoad8(R0, 54); |
| 105 | gen.addLoadImmediate(R1, -100); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 106 | gen.addJumpIfR0Equals(0x85, "LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 107 | gen.addJumpIfR0NotEquals(0x88, "LABEL_333"); |
| 108 | gen.addLoadImmediate(R0, 38); |
| 109 | gen.addJumpIfBytesAtR0NotEqual(hexStringToByteArray("ff0200000000000000000000000000"), "LABEL_333"); |
| 110 | gen.addLoadImmediate(R1, -104); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 111 | gen.addJump("LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 112 | |
| 113 | gen.defineLabel("LABEL_333"); |
| 114 | gen.addLoadFromMemory(R0, 14); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 115 | gen.addJumpIfR0NotEquals(0x96, "LABEL_UNSOLICITED_MULTICAST_NA"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 116 | gen.addLoadFromMemory(R0, 15); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 117 | gen.addJumpIfR0GreaterThan(0x48e, "LABEL_UNSOLICITED_MULTICAST_NA"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 118 | gen.addLoadImmediate(R0, 0); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 119 | gen.addJumpIfBytesAtR0NotEqual(hexStringToByteArray("7e9046bc700828c68e23672c86dd60"), "LABEL_UNSOLICITED_MULTICAST_NA"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 120 | gen.addLoadImmediate(R0, 18); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 121 | gen.addJumpIfBytesAtR0NotEqual(hexStringToByteArray("00603afffe800000000000002ac68efffe23672c"), "LABEL_UNSOLICITED_MULTICAST_NA"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 122 | gen.addLoadImmediate(R0, 54); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 123 | gen.addJumpIfBytesAtR0NotEqual(hexStringToByteArray("8600"), "LABEL_UNSOLICITED_MULTICAST_NA"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 124 | gen.addLoadImmediate(R0, 58); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 125 | gen.addJumpIfBytesAtR0NotEqual(hexStringToByteArray("40c0"), "LABEL_UNSOLICITED_MULTICAST_NA"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 126 | gen.addLoad16(R0, 60); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 127 | gen.addJumpIfR0LessThan(0x91e, "LABEL_UNSOLICITED_MULTICAST_NA"); |
| 128 | gen.addJumpIfR0GreaterThan(0x1b58, "LABEL_UNSOLICITED_MULTICAST_NA"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 129 | gen.addLoadImmediate(R0, 62); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 130 | gen.addJumpIfBytesAtR0NotEqual(hexStringToByteArray("0000000000000000010128c68e23672c05010000000005dc030440c0"), "LABEL_UNSOLICITED_MULTICAST_NA"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 131 | gen.addLoad32(R0, 90); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 132 | gen.addJumpIfR0LessThan(0x55555555, "LABEL_UNSOLICITED_MULTICAST_NA"); |
| 133 | gen.addJumpIfR0GreaterThan(0xffffffffL, "LABEL_UNSOLICITED_MULTICAST_NA"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 134 | gen.addLoad32(R0, 94); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 135 | gen.addJumpIfR0LessThan(0x55555555, "LABEL_UNSOLICITED_MULTICAST_NA"); |
| 136 | gen.addJumpIfR0GreaterThan(0xffffffffL, "LABEL_UNSOLICITED_MULTICAST_NA"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 137 | gen.addLoadImmediate(R0, 98); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 138 | gen.addJumpIfBytesAtR0NotEqual(hexStringToByteArray("000000002401fa000480f000000000000000000019030000"), "LABEL_UNSOLICITED_MULTICAST_NA"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 139 | gen.addLoad32(R0, 122); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 140 | gen.addJumpIfR0Equals(0x0, "LABEL_UNSOLICITED_MULTICAST_NA"); |
Maciej Żenczykowski | 762b7c3 | 2024-02-08 13:49:43 -0800 | [diff] [blame] | 141 | gen.addJumpIfR0LessThan(0x78, "LABEL_535"); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 142 | gen.addJumpIfR0LessThan(0x91e, "LABEL_UNSOLICITED_MULTICAST_NA"); |
| 143 | gen.addJumpIfR0GreaterThan(0x1b58, "LABEL_UNSOLICITED_MULTICAST_NA"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 144 | |
Maciej Żenczykowski | 762b7c3 | 2024-02-08 13:49:43 -0800 | [diff] [blame] | 145 | gen.defineLabel("LABEL_535"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 146 | gen.addLoadImmediate(R0, 126); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 147 | gen.addJumpIfBytesAtR0NotEqual(hexStringToByteArray("2401fa000480f00000000000000000010701"), "LABEL_UNSOLICITED_MULTICAST_NA"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 148 | gen.addLoadImmediate(R1, -72); |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 149 | gen.addJump("LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 150 | |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 151 | gen.defineLabel("LABEL_UNSOLICITED_MULTICAST_NA"); |
Maciej Żenczykowski | 42e3494 | 2024-02-07 21:55:58 -0800 | [diff] [blame] | 152 | gen.addLoadImmediate(R1, -40); |
| 153 | |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 154 | gen.defineLabel("LABEL_INC_AND_PASS"); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 155 | gen.addLoadData(R0, 0); |
| 156 | gen.addAdd(1); |
| 157 | gen.addStoreData(R0, 0); |
| 158 | gen.addJump(PASS_LABEL); |
Maciej Żenczykowski | c0726cc | 2024-01-18 18:33:31 -0800 | [diff] [blame] | 159 | |
Maciej Żenczykowski | d68c77f | 2024-02-08 14:22:05 -0800 | [diff] [blame] | 160 | gen.defineLabel("LABEL_INC_AND_DROP"); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 161 | gen.addLoadData(R0, 0); |
| 162 | gen.addAdd(1); |
| 163 | gen.addStoreData(R0, 0); |
| 164 | gen.addJump(DROP_LABEL); |
Maciej Żenczykowski | c0726cc | 2024-01-18 18:33:31 -0800 | [diff] [blame] | 165 | |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 166 | byte[] program = gen.generate(); |
| 167 | final String programString = toHexString(program).toLowerCase(); |
Maciej Żenczykowski | 762b7c3 | 2024-02-08 13:49:43 -0800 | [diff] [blame] | 168 | final String referenceProgramHexString = "6bf8b03a01b8120c6b8894022b06006b847c022488a27c021f88a47c021a88b87c021588cd7c021088e17c020b88e384004608066a0e6dff68a401f6000600010800060412147a1f016dff648401e900021a1c6b807c01e00000686bc8a401cc0006ffffffffffff6a266bb0a401c50004c0a801ec6bec7401ba120c84007808000a17821f1112149c00181fffab0d2a108211446a3239a205067e9046bc70086be874018f0a1e52f06ba07c018a00e06ba81a1e7e0000017dffffffff6ba47e00000172c0a801ff0a1782140612149c000d1fffab0d2a108206076dff6c7401596bdc68a401450006ffffffffffff6bac7401466be474013b7c001386dd686bc4a401280006ffffffffffff6bbc7401290a147c011c00007a0e3a6b8c0a267c011600ff6bd474010b0a366b9c7c010800858218886a26a2040fff02000000000000000000000000006b9872edaa0e82e096aa0f8c00d9048e68a2c60f7e9046bc700828c68e23672c86dd606a12a2ad1400603afffe800000000000002ac68efffe23672c6a36a2a60286006a3aa29f0240c0123c940098091e8c00931b586a3ea2721c0000000000000000010128c68e23672c05010000000005dc030440c01a5a9600000067555555558e0000005effffffff1a5e9600000053555555558e0000004affffffff6a62a22d18000000002401fa000480f0000000000000000000190300001a7a7a2800920a78940020091e8c001b1b586a7ea204122401fa000480f000000000000000000107016bb872086bd8b03a01b87206b03a01b87201"; |
Maciej Żenczykowski | 63c2df9 | 2024-01-19 12:32:24 -0800 | [diff] [blame] | 169 | assertEquals(referenceProgramHexString, programString); |
Maciej Żenczykowski | 090fb74 | 2024-01-19 12:12:07 -0800 | [diff] [blame] | 170 | } |