notes

Hack C-instruction operations

c Operation a=0 a=1 Raw operation
111111 1 1   !(!0 + !0)
101010 0 0   0 + 0
101111 0     !(0 + !0)
111011 0     !(!0 + 0)
101000 0     0 & 0
111000 0     !0 & 0
111101 0     !(!0 & !0)
001000 0     x & 0
011000 0     !x & 0
100000 0     0 & y
100100 0     0 & !y
101100 0     0 & !0
111010 -1 -1   !0 + 0
101110 -1     0 + !0
101011 -1     !(0 + 0)
111100 -1     !0 & !0
101001 -1     !(0 & 0)
101101 -1     !(0 & !0)
111001 -1     !(!0 & 0)
001001 -1     !(x & 0)
011001 -1     !(!x & 0)
100001 -1     !(0 & y)
100101 -1     !(0 & !y)
111110 -2     !0 + !0
001100 x D   x & !0
001010 x     x + 0
011011 x     !(!x + 0)
011101 x     !(!x & !0)
110000 y A M !0 & y
100010 y     0 + y
100111 y     !(0 + !y)
110101 y     !(!0 & !y)
001101 !x !D   !(x & !0)
001011 !x     !(x + 0)
011010 !x     !x + 0
011100 !x     !x & !0
110001 !y !A !M !(!0 & y)
100011 !y     !(0 + y)
100110 !y     0 + !y
110100 !y     !0 & !y
001111 -x -D   !(x + !0)
110011 -y -A -M !(!0 + y)
011111 x + 1 D+1   !(!x + !0)
110111 y + 1 A+1 M+1 !(!0 + !y)
001110 x - 1 D-1   x + !0
110010 y - 1 A-1 M-1 !0 + y
000010 x + y D+A D+M x + y
010011 x - y D-A D-M !(!x + y)
000111 y - x A-D M-D !(x + !y)
011110 -x - 2     !x + !0
110110 -y - 2     !0 + !y
010111 x + y + 1     !(!x + !y)
000110 x - y - 1     x + !y
010010 y - x - 1     !x + y
000011 -x - y - 1     !(x + y)
010110 -x - y - 2     !x + !y
000000 x & y D&A D&M x & y
000100 x & !y     x & !y
010000 !x & y     !x & y
000001 !(x & y)     !(x & y)
010101 x \| y D\|A D\|M !(!x & !y)
010001 x \| !y     !(!x & y)
000101 !x \| y     !(x & !y)
010100 !(x \| y)     !x & !y