xplshn
·
2025-09-14
arrays.bx
Bx
1extrn printf, malloc;
2
3type struct Point {
4 x int;
5 y int;
6 name *byte;
7};
8
9type enum Color {
10 RED,
11 GREEN,
12 BLUE,
13 YELLOW
14};
15
16void demo_integer_arrays() {
17 printf("\nInteger arrays:\n");
18
19 int int_array[3];
20 int8 int8_array[3];
21 int16 int16_array[3];
22 int32 int32_array[3];
23 int64 int64_array[3];
24 uint uint_array[3];
25 uint8 uint8_array[3];
26 uint16 uint16_array[3];
27 uint32 uint32_array[3];
28 uint64 uint64_array[3];
29 byte byte_array[3];
30
31 int_array[0] = -100;
32 int_array[1] = 0;
33 int_array[2] = 100;
34 printf("int: [%d, %d, %d]\n", int_array[0], int_array[1], int_array[2]);
35
36 int8_array[0] = -50;
37 int8_array[1] = 0;
38 int8_array[2] = 50;
39 printf("int8: [%d, %d, %d]\n", int8_array[0], int8_array[1], int8_array[2]);
40
41 int16_array[0] = -1000;
42 int16_array[1] = 0;
43 int16_array[2] = 1000;
44 printf("int16: [%d, %d, %d]\n", int16_array[0], int16_array[1], int16_array[2]);
45
46 int32_array[0] = -100000;
47 int32_array[1] = 0;
48 int32_array[2] = 100000;
49 printf("int32: [%d, %d, %d]\n", int32_array[0], int32_array[1], int32_array[2]);
50
51 int64_array[0] = -1000000;
52 int64_array[1] = 0;
53 int64_array[2] = 1000000;
54 printf("int64: [%ld, %ld, %ld]\n", int64_array[0], int64_array[1], int64_array[2]);
55
56 uint_array[0] = 10;
57 uint_array[1] = 20;
58 uint_array[2] = 30;
59 printf("uint: [%u, %u, %u]\n", uint_array[0], uint_array[1], uint_array[2]);
60
61 uint8_array[0] = 100;
62 uint8_array[1] = 150;
63 uint8_array[2] = 200;
64 printf("uint8: [%u, %u, %u]\n", uint8_array[0], uint8_array[1], uint8_array[2]);
65
66 uint16_array[0] = 1000;
67 uint16_array[1] = 2000;
68 uint16_array[2] = 3000;
69 printf("uint16: [%u, %u, %u]\n", uint16_array[0], uint16_array[1], uint16_array[2]);
70
71 uint32_array[0] = 100000;
72 uint32_array[1] = 200000;
73 uint32_array[2] = 300000;
74 printf("uint32: [%u, %u, %u]\n", uint32_array[0], uint32_array[1], uint32_array[2]);
75
76 uint64_array[0] = 1000000;
77 uint64_array[1] = 2000000;
78 uint64_array[2] = 3000000;
79 printf("uint64: [%lu, %lu, %lu]\n", uint64_array[0], uint64_array[1], uint64_array[2]);
80
81 byte_array[0] = 'A';
82 byte_array[1] = 'B';
83 byte_array[2] = 'C';
84 printf("byte: [%c, %c, %c]\n", byte_array[0], byte_array[1], byte_array[2]);
85}
86
87void demo_float_arrays() {
88 printf("\nFloat arrays:\n");
89
90 float float_array[3];
91 float32 float32_array[3];
92 float64 float64_array[3];
93
94 float_array[0] = 1.1;
95 float_array[1] = 2.2;
96 float_array[2] = 3.3;
97 printf("float: [%.2f, %.2f, %.2f]\n", float_array[0], float_array[1], float_array[2]);
98
99 float32_array[0] = 1.25;
100 float32_array[1] = 2.75;
101 float32_array[2] = 3.125;
102 printf("float32: [%.3f, %.3f, %.3f]\n", float32_array[0], float32_array[1], float32_array[2]);
103
104 float64_array[0] = 1.123456;
105 float64_array[1] = 2.789012;
106 float64_array[2] = 3.456789;
107 printf("float64: [%.6f, %.6f, %.6f]\n", float64_array[0], float64_array[1], float64_array[2]);
108}
109
110void demo_bool_arrays() {
111 printf("\nBool arrays:\n");
112
113 bool bool_array[4];
114
115 bool_array[0] = 1;
116 bool_array[1] = 0;
117 bool_array[2] = 1;
118 bool_array[3] = 0;
119
120 printf("bool: [%s, %s, %s, %s]\n",
121 bool_array[0] ? "true" : "false",
122 bool_array[1] ? "true" : "false",
123 bool_array[2] ? "true" : "false",
124 bool_array[3] ? "true" : "false");
125}
126
127void demo_pointer_arrays() {
128 printf("\nPointer arrays:\n");
129
130 int values[3];
131 *int int_ptr_array[3];
132 *byte string_array[3];
133 *void void_ptr_array[3];
134
135 values[0] = 42;
136 values[1] = 84;
137 values[2] = 126;
138
139 int_ptr_array[0] = &values[0];
140 int_ptr_array[1] = &values[1];
141 int_ptr_array[2] = &values[2];
142
143 printf("int*: [%d, %d, %d]\n",
144 *int_ptr_array[0], *int_ptr_array[1], *int_ptr_array[2]);
145
146 string_array[0] = "Hello";
147 string_array[1] = "World";
148 string_array[2] = "GBC";
149
150 printf("string: [\"%s\", \"%s\", \"%s\"]\n",
151 string_array[0], string_array[1], string_array[2]);
152
153 void_ptr_array[0] = &values[0];
154 void_ptr_array[1] = string_array[0];
155 void_ptr_array[2] = int_ptr_array;
156}
157
158void demo_struct_arrays() {
159 printf("\nStruct arrays:\n");
160
161 Point point_array[3];
162
163 point_array[0].x = 10;
164 point_array[0].y = 20;
165 point_array[0].name = "Origin";
166
167 point_array[1].x = 100;
168 point_array[1].y = 200;
169 point_array[1].name = "Point A";
170
171 point_array[2].x = -50;
172 point_array[2].y = 75;
173 point_array[2].name = "Point B";
174
175 printf("Points:\n");
176 i := 0;
177 while (i < 3) {
178 printf(" [%d]: (%d, %d) \"%s\"\n", i,
179 point_array[i].x, point_array[i].y, point_array[i].name);
180 i = i + 1;
181 }
182}
183
184void demo_enum_arrays() {
185 printf("\nEnum arrays:\n");
186
187 Color color_array[4];
188
189 color_array[0] = RED;
190 color_array[1] = GREEN;
191 color_array[2] = BLUE;
192 color_array[3] = YELLOW;
193
194 printf("Colors:\n");
195 i := 0;
196 while (i < 4) {
197 color_name := "";
198 switch (color_array[i]) {
199 case RED: color_name = "RED"; break;
200 case GREEN: color_name = "GREEN"; break;
201 case BLUE: color_name = "BLUE"; break;
202 case YELLOW: color_name = "YELLOW"; break;
203 default: color_name = "UNKNOWN";
204 }
205 printf(" [%d]: %s (%d)\n", i, color_name, color_array[i]);
206 i = i + 1;
207 }
208}
209
210void demo_struct_pointer_arrays() {
211 printf("\nStruct pointer arrays:\n");
212
213 *Point point_ptr_array[2];
214
215 point_ptr_array[0] = malloc(sizeof(Point));
216 point_ptr_array[1] = malloc(sizeof(Point));
217
218 point_ptr_array[0].x = 300;
219 point_ptr_array[0].y = 400;
220 point_ptr_array[0].name = "Dynamic A";
221
222 point_ptr_array[1].x = -150;
223 point_ptr_array[1].y = 250;
224 point_ptr_array[1].name = "Dynamic B";
225
226 printf("Dynamic points:\n");
227 i := 0;
228 while (i < 2) {
229 printf(" [%d]: (%d, %d) \"%s\"\n", i,
230 point_ptr_array[i].x, point_ptr_array[i].y, point_ptr_array[i].name);
231 i = i + 1;
232 }
233}
234
235int main() {
236 printf("Array types test\n");
237
238 demo_integer_arrays();
239 demo_float_arrays();
240 demo_bool_arrays();
241 demo_pointer_arrays();
242 demo_struct_arrays();
243 demo_enum_arrays();
244 demo_struct_pointer_arrays();
245
246 printf("\nDone.\n");
247 return (0);
248}