summaryrefslogtreecommitdiff
path: root/src/cortexelf-v1/ao_flip_bits.5c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cortexelf-v1/ao_flip_bits.5c')
-rw-r--r--src/cortexelf-v1/ao_flip_bits.5c23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/cortexelf-v1/ao_flip_bits.5c b/src/cortexelf-v1/ao_flip_bits.5c
index 055d5299..cd5507cc 100644
--- a/src/cortexelf-v1/ao_flip_bits.5c
+++ b/src/cortexelf-v1/ao_flip_bits.5c
@@ -1,19 +1,24 @@
#!/usr/bin/nickle
-int flip_bits(int a)
+int flip_bits(int a, int n)
{
int result = 0;
- for (int pos = 0; pos < 8; pos++)
+ for (int pos = 0; pos < n; pos++)
if ((a & (1 << pos)) != 0)
- result |= (1 << (7 - pos));
+ result |= (1 << (n - 1 - pos));
return result;
}
-printf ("static const uint8_t ao_flip_bits[256] = {\n");
+void print_flip_bits(string name, int n) {
+ printf ("static const uint8_t %s_%d[%d] = {\n", name, n, 1 << n);
-for (int i = 0; i < 256; i++) {
- printf (" 0x%02x,", flip_bits(i));
- if ((i & 0xf) == 0xf)
- printf("\n");
+ for (int i = 0; i < 1 << n; i++) {
+ printf (" 0x%02x,", flip_bits(i, n));
+ if ((i & 0xf) == 0xf)
+ printf("\n");
+ }
+ printf("};\n");
}
-printf("};\n");
+
+print_flip_bits("ao_flip_bits", 8);
+print_flip_bits("ao_flip_bits", 2);