aboutsummaryrefslogtreecommitdiff
path: root/tools/builtInChips/ALU.hdl
diff options
context:
space:
mode:
Diffstat (limited to 'tools/builtInChips/ALU.hdl')
-rw-r--r--tools/builtInChips/ALU.hdl55
1 files changed, 0 insertions, 55 deletions
diff --git a/tools/builtInChips/ALU.hdl b/tools/builtInChips/ALU.hdl
deleted file mode 100644
index e5fd1f0..0000000
--- a/tools/builtInChips/ALU.hdl
+++ /dev/null
@@ -1,55 +0,0 @@
-// This file is part of www.nand2tetris.org
-// and the book "The Elements of Computing Systems"
-// by Nisan and Schocken, MIT Press.
-// File name: tools/builtIn/ALU.hdl
-
-/**
- * The ALU. Computes one of the following functions:
- * x+y, x-y, y–x, 0, 1, -1, x, y, -x, -y, !x, !y,
- * x+1, y+1, x-1, y-1, x&y, x|y on two 16-bit inputs.
- * Which function to compute is determined by 6 input bits
- * denoted zx, nx, zy, ny, f, no.
- * The computed function's value is called "out".
- * In addition to computing out, the ALU computes two
- * 1-bit outputs called zr and ng:
- * if out == 0, zr = 1; otherwise zr = 0;
- * If out < 0, ng = 1; otherwise ng = 0.
- * The 6-bit combinations (zx,nx,zy,ny,f,no) and
- * their effect are documented in the book.
- */
-
-// Implementation: the ALU manipulates the x and y
-// inputs and then operates on the resulting values,
-// as follows:
-// if (zx == 1) sets x = 0 // 16-bit constant
-// if (nx == 1) sets x = ~x // bitwise "not"
-// if (zy == 1) sets y = 0 // 16-bit constant
-// if (ny == 1) sets y = ~y // bitwise "not"
-// if (f == 1) sets out = x + y // integer 2's-complement addition
-// if (f == 0) sets out = x & y // bitwise And
-// if (no == 1) sets out = ~out // bitwise Not
-// if (out == 0) sets zr = 1
-// if (out < 0) sets ng = 1
-
-
-CHIP ALU {
-
- IN // 16-bit inputs:
- x[16], y[16],
- // Control bits:
- zx, // Zero the x input
- nx, // Negate the x input
- zy, // Zero the y input
- ny, // Negate the y input
- f, // Function code: 1 for add, 0 for and
- no; // Negate the out output
-
- OUT // 16-bit output
- out[16],
-
- // ALU output flags
- zr, // 1 if out=0, 0 otherwise
- ng; // 1 if out<0, 0 otherwise
-
- BUILTIN ALU;
-}