Mercurial > repo
view interps/egobf/src/optim2.c @ 3904:49ab5b2e2ebf
<boily> echo -e "#!/usr/bin/env python\\n# -*- encoding: utf-8 -*-\\nimport sys\\nimport unicodedata\\ntry:\\n print u\'\'.join(map(unicodedata.lookup, sys.argv[1:])).encode(\'utf-8\')\\nexcept KeyError:\\n print u\'Unknown character.\'" >bin/unicode
author | HackBot |
---|---|
date | Fri, 11 Oct 2013 15:25:39 +0000 |
parents | 859f9b4339e6 |
children |
line wrap: on
line source
#include "egobfi.h" #include "optim2.h" void optim2() { struct bfi *cur; /* second-level optimization, searches for add-to loops */ for (pptr = 0; prog[pptr].cmd != FIN; pptr++) { if (prog[pptr].cmd == LPO) { cur = prog + pptr; /* two types of add-tos: >x +x <x -x -x >x +x <x */ if (cur[1].cmd == RHT && cur[3].cmd == RHT && cur[1].arg1 == cur[3].arg1 * -1 && cur[5].cmd == LPC) { if (cur[2].cmd == ADD && cur[4].cmd == ADD && cur[4].arg1 == -1) { /* YAY! */ cur->cmd = ADDTO; cur->arg1 = cur[1].arg1; cur->arg2 = cur[2].arg1; cur[1].cmd = NIL; cur[2].cmd = NIL; cur[3].cmd = NIL; cur[4].cmd = NIL; cur[5].cmd = NIL; pptr += 5; } } else if (cur[2].cmd == RHT && cur[4].cmd == RHT && cur[2].arg1 == cur[4].arg1 * -1 && cur[5].cmd == LPC) { if (cur[1].cmd == ADD && cur[3].cmd == ADD && cur[1].arg1 == -1) { /* YAY! */ cur->cmd = ADDTO; cur->arg1 = cur[2].arg1; cur->arg2 = cur[3].arg1; cur[1].cmd = NIL; cur[2].cmd = NIL; cur[3].cmd = NIL; cur[4].cmd = NIL; cur[5].cmd = NIL; pptr += 5; } } } } pptr = 0; }