diff --git a/module/mes/as-i386.mes b/module/mes/as-i386.mes index a2762740..9806f0e0 100644 --- a/module/mes/as-i386.mes +++ b/module/mes/as-i386.mes @@ -131,6 +131,9 @@ #x89 #xd1 ; mov %edx,%ecx #xd3 #xe0)) ; shl %cl,%eax +(define (i386:accu-or-base) + '(#x09 #xd0)) ; or %edx,%eax + (define (i386:accu+accu) '(#x01 #xc0)) ; add %eax,%eax diff --git a/module/mes/as-i386.scm b/module/mes/as-i386.scm index fa543c54..7f094c07 100644 --- a/module/mes/as-i386.scm +++ b/module/mes/as-i386.scm @@ -46,6 +46,7 @@ i386:accu*base i386:accu-base i386:accu-shl + i386:accu-or-base i386:accu<accu diff --git a/scaffold/mini-mes.c b/scaffold/mini-mes.c index 0d8fdb94..8ab0a706 100644 --- a/scaffold/mini-mes.c +++ b/scaffold/mini-mes.c @@ -1488,9 +1488,7 @@ logior (SCM x) ///((arity . n)) #if __GNUC__ n |= VALUE (car (x)); #else - puts ("FIXME: logior\n"); - //FIXME - //n = n | VALUE (car (x)); + n = n | VALUE (car (x)); #endif x = cdr (x); } diff --git a/scaffold/t.c b/scaffold/t.c index 419e7533..0a620d67 100644 --- a/scaffold/t.c +++ b/scaffold/t.c @@ -219,6 +219,9 @@ math_test () puts ("t: 3 << 4\n"); if (3 << 4 != 48) return 3 << 4; + puts ("t: 1 | 4\n"); + if ((1 | 4) != 5) return 1 | 4; + return read_test (); }