0
\$\begingroup\$

Little bit of a confusing question, also an x-post (Since it may be more suited here than SO). But anyways Im really looking for learning some low level programming. Thing is, Dev boards like Arduino/Etc. really hide alot of whats going on.

I have spent some time learning about Computer Architecture, Logic/Gates/Sequential Logic/etc.. (I went even as far as to learn the Physics of Semiconductors and Electronics related to it all, just to know what exactly is going on, as well as how Gates are made using CMOS Transistors and such).

But thats about where it ends....and I want to be able to understand how an Instruction (Like Hex/or Assembly/etc.. code) is moving through a Simple as Possible computer (alot of books i've used went straight from like Gates to a Computer....without really the in between). Even something simple like.....storing a value in a register or memory location (and maybe printing to a pixel? or something).

I think something that would be interesting would be perhaps even writing an emulator eventually. I have experience with High Level languages, but i've heard something like a 6502 might be a good start since you use alot of Assembly, and the instruction set isn't too large.

Does anyone know of any resources/thoughts/books that might help? I've gone through "Elements of Computing Systems", and while......it is a good book I don't really feel like it goes through whats really going on and seeing it happen. I think ideally i'd like to be able to build a Simple as Possible computer....maybe step by step and be able to see why sending XXXX code will store this in X register or Y memory location, etc...

\$\endgroup\$

closed as not a real question by Leon Heller, user17592, Olin Lathrop, Anindo Ghosh, Brian Carlton Apr 18 '13 at 17:28

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center. If this question can be reworded to fit the rules in the help center, please edit the question.

  • 1
    \$\begingroup\$ I find it interesting the question was closed after I replied with an answer that had already gotten two up votes. I stated the question was broad but provided an appropriate response. \$\endgroup\$ – tcrosley Apr 18 '13 at 17:32
  • \$\begingroup\$ The last paragraph asks a clear and answerable question [paraphrasing]: ":Where can I learn how an instruction-follower executes an instruction?" -- Vote to reopen. \$\endgroup\$ – JRobert Apr 18 '13 at 17:57
  • \$\begingroup\$ @JRobert So you wouldn't complain if I changed the close reason to "Not Constructive" since the question "will likely solicit debate, arguments, polling, or extended discussion."? \$\endgroup\$ – W5VO Apr 19 '13 at 20:56
  • \$\begingroup\$ Hmm, no I won't complain; I wasn't looking to argue. But I think the OP's question is answerable, as tcrosley has done. How many questions have only one right answer? The OP asked for some guidance; some was offered; perhaps more could be as well. Seems appropriate enough to me. \$\endgroup\$ – JRobert Apr 19 '13 at 21:02
2
\$\begingroup\$

This question is too broad to be answered here -- it would take a book -- but luckily, that book has already been written : "The Elements of Computing Systems: Building a Modern Computer from First Principles" by Noam Nisan and Shimon Schocken.

The hardware is first discussed, starting from a low level (combinational and sequential logic gates, ALUs and memory), and then shows how these relate to the machine instructions. The book also covers a compiler for a high-level language, and an operating system.

An Appendix describes the hardware in HDL (Hardware Description Language).

\$\endgroup\$