repos / gbc

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

gbc / examples
xplshn  ·  2025-08-13

rule110.b

B
 1// -*- mode: simpc -*-
 2
 3word;
 4
 5display(base, n) {
 6    extrn printf;
 7    auto i;
 8
 9    i  = 0;
10    while (i < n) {
11        if (base[i]) printf("#"); else printf(".");
12        i  += 1;
13    }
14    printf("\n");
15}
16
17next(base, n) {
18    auto i, state;
19
20    state = base[0] | base[1] << 1;
21    i  = 2;
22    while (i < n) {
23        state <<= 1;
24        state  |= base[i];
25        state  &= 7;
26        base[i - 1] = (110>>state)&1;
27        i += 1;
28    }
29}
30
31main() {
32    extrn malloc, memset;
33    auto base, n;
34
35    word = &0[1]; /* trick to obtain the word size */
36    n    = 100;
37    base = malloc(word*n);
38    memset(base, 0, word*n);
39    base[n - 2] = 1;
40
41    display(base, n);
42    auto i;
43    i = 0;
44    while (i < n - 3) {
45        next(base, n);
46        display(base, n);
47        i += 1;
48    }
49}