Most of the stuff here is already stated in the book, perhaps a bit understated. I will put in more stuff that I feel has been dealt with rather shoddily in the book. 1) There are 4 control inputs to the ALU, F_0 through F_3, clearly because, we are to "accomodate" 16 operations of the ALU, as enumerated in Fig.6-4. 2) Remember the function of decoders from Appendix A. Basically, what a decoder does is, based on the control inputs, chooses one of the output lines (there are lots of output lines in a decoder, as against the usual MUX). Apropos Fig.6-3, the datapath of the ARC, we have to have three decoders. Why so ? The ALU takes in two operands, and outputs one value, the two input operands are labelled A and B, and the output is called C. These inputs and outputs, can actually come or finally go to one of the registers that we have in the datapath. So we need decoders to choose which of the registers the buses (A, B or C) will feed from. So, we have the C decoder, for instance, which has 37 output lines (from c_1 to c_37) instead of 38 for the A and the B decoders. This is because, the %r0 register always is supposed to be containing zeros, so we never need to change it. Hence, the need to have a c_0 line for the C decoder is obviated. A word about the number of control inputs to these various decoders. Clearly, 5 control input lines won't suffice, because that can allow only at most 32 output lines. So we need 6 control input lines, as it is, in Fig.6-3. 3) Consider Fig.6-8 : Design of a register. This seems a stupid point to mention, but ne'ertheless. The label C31 is a typo, ought to read c31 as the rest of the data inputs from the C bus. It is important to realize that these inputs are different from the output lines of the C decoder. The decoder just chooses which register the data is to go to, whereas, these collection of c's are the actual data itself, from the C bus.