repos / gbc

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

gbc / examples
xplshn  ·  2025-08-13

duffs_device.b

B
 1// https://en.wikipedia.org/wiki/Duff%27s_device
 2duffs_device(s) {
 3    extrn strlen, putchar;
 4    auto n, count;
 5    count = strlen(s);
 6    n = (count + 7) / 8;
 7    switch count%8 {
 8    case 0: while(1) { putchar(*s++);
 9    case 7:            putchar(*s++);
10    case 6:            putchar(*s++);
11    case 5:            putchar(*s++);
12    case 4:            putchar(*s++);
13    case 3:            putchar(*s++);
14    case 2:            putchar(*s++);
15    case 1:            putchar(*s++);
16                       putchar('|');
17                       putchar('\n');
18                       if (--n <= 0) return;
19            }
20    }
21}
22
23main() {
24    duffs_device("The quick brown fox jumps over the lazy dog.");
25}