repos / gbc

GBC - Go B Compiler
git clone https://github.com/xplshn/gbc.git

gbc / examples
xplshn  ·  2025-08-13

da.b

B
 1W; ITEMS; COUNT; CAPACITY;
 2
 3da_append(da, x) {
 4    extrn realloc;
 5
 6    if (da[COUNT] >= da[CAPACITY]) {
 7        if (da[CAPACITY]) da[CAPACITY] *= 2;
 8        else da[CAPACITY] = 256;
 9
10        da[ITEMS] = realloc(da[ITEMS], da[CAPACITY] * W);
11    }
12    da[ITEMS][da[COUNT]++] = x;
13}
14
15main() {
16    W = &0[1];
17
18    auto i;
19    i = 0;
20    ITEMS    = i++;
21    COUNT    = i++;
22    CAPACITY = i++;
23
24    // Allocating Dynamic Array structure on the stack
25    auto da 3;
26    da[ITEMS]    = 0;
27    da[COUNT]    = 0;
28    da[CAPACITY] = 0;
29
30    auto n; n = 10;
31    i = 0; while (i < n) da_append(da, (++i)*2);
32
33    extrn printf;
34    printf("xs_items    = %p\n",  da[ITEMS]);
35    printf("xs_count    = %zu\n", da[COUNT]);
36    printf("xs_capacity = %zu\n", da[CAPACITY]);
37    i = 0; while (i < n) {
38        printf("%zu => %d\n", i, da[ITEMS][i]);
39        ++i;
40    }
41}