How did you like Computer Architecture when you studied it? I struggled in my Computer Architecture class, what do I do to really understand and appreciate that kind of material? Frick around more with assembly code? Or just like learn C and get a practical appreciation of low level systems? What do
Also, any books better than picrel?
this book was pretty good. Loved that class because we built the SAP1 from book related.
It’s a tough read if you don’t know shit about electrical diagrams tho
I'll check it out! Thnky
Just took a look at your book and it’s good and up to date, the one I mention will confuse the frick out of you cause it’s so old
What area did you struggle on specifically? Grasping the architecture itself? Or just machine language and assembly?
I struggled with making a connection between procedures and the data path. I might just need to spend more time with it b/c I'm definitely interested from a hardware level and up, just not from a high level software level and down, I guess. I liked programming in assembly when I made the time for it, and machine language is cool. However, when it gets into instruction codes and how exactly they work in memory, I can't implement the knowledge easily.
I also need like, a practical way of really getting the steps from like an .exe file to machine code, vice versa. So far, I just feel foggy when it comes to all the system programs
You can’t really write machine code on modern computers, it’s way too complex. You can do PCASM which probably has a compiler available somewhere. I did ARM assembly which used a command called “as” to assemble object files, then you used a command called “ld” to link the assembled objects together… i think. It’s been a year or so since I did any of that shit. Honestly focus on the architecture stuff
Anon that's standard C programming stuff, it's hardly secret esoteric knowledge.
Hm. Are there any books that take an approach to teaching comp arch with C? Or some similar kind of methodology? I'm interested in doing both at once, as OP
Yea, now I can see how just focusing on comp arch and regular programming, meeting somewhere in between, might be time better spent tbh
In what context does that textbook use the word “procedure?” I’m not familiar with that term in this context though I’m sure it relates to something I read in digital computer electronics
If I remember correctly, it might have been how they connected subroutines to functions in MIPS assembly language we were writing in. I couldn't very flexibly implement them in MIPS, frustratingly enough.
Okay so here’s how it works on the SAP1, a really simple model of the computer that does basically ONLY what you’re describing
In memory, the program is stored at addresses. Let’s say 0-15 is your program, and 16-31 is program data.
When you run the program, a part of the computer called the “program counter” starts counting up from 0, pointing to memory, and that part of memory is loaded into another portion called the “instruction register.”
The instruction register tells the CPU what to do, and this can be anything from adding to registers to moving data around to writing to memory, read, load a constant into a register, etc.
the CPU does what’s in the instruction register, the program counter is incremented by 1, and the next instruction is loaded from memory which resides at address 1. This repeats until a halt instruction is reached
Follow so far?
>Follow so far?
Yeh
So now you have a machine with a gagillian memory locations right? And your program counter is at address 0xDEADBEEF.
The way you’d enter into a function is you get the address (which is linked to it’s name by thinker). Store DEADBEEF in some memory location (usually on the stack) and use the JMP instruction to goto the function’s adress. That loads into the program counter, blah blah blah, that function ends, then the program returns back to DEADBEEF + 1
Does that make sense?
>thinker
Linker
Idk how this is implemented in mips but it would probably look something like
.extern
function
.data
Blah blah blah
.start
JMP function
>Idk how this is implemented
Yea, Idk what .extern does exactly but it would be lssimilar
.data
.extern
function
.text
j function
Extern tells the object to search all available namespaces for something called function. This is done in the linking process of the compile, and the compile will fail if function is found
It was one of these things I had no idea about going in, having only done programming before. I'm really glad I learned about it though, it teaches you a lot about how computers work. It also helped me a lot in my professional life where I do low level hacking.
lol wtf is that book cover anyways.. actually i guess its kind of cool
That's a godlike book anon, I loved the class. For me, I already had background in ass, verilog, and C. Check out this guy, it was a nice companion for my readings.
I'll give it another shot. I do remember appreciating its enthusiasm. I never really gave it a chance, but I'm due to return to it
samegay OP here–I'll watch
How did you read the book? Mostly from start to finish or by skipping around as needed? Were you programming in assembly on the side? thnk4readin
If you want to understand it you should study ee
Couldn't wrap my head around assembly. Probably just moronic as everyone else learned it. Other parts of the course were cool tho, like cpu architecture.
The problem with computer architecture courses is that some popular books are just shit and many professors are even worse, making up completely arbitrary ad-hoc formalisms that do not help in the slightest to understand and only obscure the important ideas. They intentionally make simple topics complicated for the sake of inflating the difficulty of the course.
The book you posted is quite good, however, but I preferred Tanenbaum's computer architecture book.
I studied at a small state uni and honestly our computer architecture course was pretty good. We went through standard Neumann architecture, assembly programming, bus access, memory, caches and optimizations, , RISC vs CISC, pipelining, multi core and paging. tbh one of the most comfy courses I took.