// Octal "assembler". See also osma.s. #include // version with globals, 108 bytes: /* 8048350: 55 push %ebp */ /* 8048351: 89 e5 mov %esp,%ebp */ /* 8048353: 83 e4 f0 and $0xfffffff0,%esp */ /* 8048356: 83 ec 10 sub $0x10,%esp */ /* 8048359: e8 b2 ff ff ff call 8048310 */ /* 804835e: 83 f8 ff cmp $0xffffffff,%eax */ /* 8048361: a3 30 a0 04 08 mov %eax,0x804a030 */ /* 8048366: 74 51 je 80483b9 */ /* 8048368: 83 e8 30 sub $0x30,%eax */ /* 804836b: 83 f8 07 cmp $0x7,%eax */ /* 804836e: 77 1d ja 804838d */ /* 8048370: 8b 0d 2c a0 04 08 mov 0x804a02c,%ecx */ /* 8048376: ff 05 28 a0 04 08 incl 0x804a028 */ /* 804837c: 8d 14 cd 00 00 00 00 lea 0x0(,%ecx,8),%edx */ /* 8048383: 09 c2 or %eax,%edx */ /* 8048385: 89 15 2c a0 04 08 mov %edx,0x804a02c */ /* 804838b: eb cc jmp 8048359 */ /* 804838d: 83 3d 28 a0 04 08 00 cmpl $0x0,0x804a028 */ /* 8048394: 74 c3 je 8048359 */ /* 8048396: a1 2c a0 04 08 mov 0x804a02c,%eax */ /* 804839b: 89 04 24 mov %eax,(%esp) */ /* 804839e: e8 9d ff ff ff call 8048340 */ /* 80483a3: c7 05 28 a0 04 08 00 movl $0x0,0x804a028 */ /* 80483aa: 00 00 00 */ /* 80483ad: c7 05 2c a0 04 08 00 movl $0x0,0x804a02c */ /* 80483b4: 00 00 00 */ /* 80483b7: eb a0 jmp 8048359 */ /* 80483b9: 31 c0 xor %eax,%eax */ /* 80483bb: c9 leave */ /* 80483bc: c3 ret */ // version with locals, one more instruction but only 63 bytes: /* 8048350: 55 push %ebp */ /* 8048351: 89 e5 mov %esp,%ebp */ /* 8048353: 56 push %esi */ /* 8048354: 53 push %ebx */ /* 8048355: 83 e4 f0 and $0xfffffff0,%esp */ /* 8048358: 83 ec 10 sub $0x10,%esp */ /* 804835b: 31 f6 xor %esi,%esi */ /* 804835d: 31 db xor %ebx,%ebx */ /* 804835f: e8 ac ff ff ff call 8048310 */ /* 8048364: 83 f8 ff cmp $0xffffffff,%eax */ /* 8048367: 74 1e je 8048387 */ /* 8048369: 83 e8 30 sub $0x30,%eax */ /* 804836c: 83 f8 07 cmp $0x7,%eax */ /* 804836f: 77 08 ja 8048379 */ /* 8048371: c1 e3 03 shl $0x3,%ebx */ /* 8048374: 46 inc %esi */ /* 8048375: 09 c3 or %eax,%ebx */ /* 8048377: eb e6 jmp 804835f */ /* 8048379: 85 f6 test %esi,%esi */ /* 804837b: 74 e2 je 804835f */ /* 804837d: 89 1c 24 mov %ebx,(%esp) */ /* 8048380: e8 bb ff ff ff call 8048340 */ /* 8048385: eb d4 jmp 804835b */ /* 8048387: 8d 65 f8 lea -0x8(%ebp),%esp */ /* 804838a: 31 c0 xor %eax,%eax */ /* 804838c: 5b pop %ebx */ /* 804838d: 5e pop %esi */ /* 804838e: 5d pop %ebp */ /* 804838f: c3 ret */ int main() { int b = 0, c, d = 0; while ((c = getchar()) != EOF) { if ('0' <= c && c <= '7') d++, b = (b << 3) | (c - '0'); else if (d) putchar(b), b = d = 0; } return 0; }