To try everything Brilliant has to offer-free-for a full 30 days, visit brilliant.org/mattbatwings You’ll also get 20% off an annual premium subscription.
For some reason making it a Minecraft tutorial is much more aprochable than videos that use actual computers or a shit load of diagrams, even though it's exactly the same principles
@@deltamico nah, not even. I'm actually a computer science student and this is is actually miles better than the stuff you get at my uni in terms of complexity. much more easy to follow along in here.
@@selikwilhelm4086literally bro, I'm a compeng student and these videos are a perfect summary of the topics in my system architecture classes, both compeng and compsci
@@fus-ro-dah This and his format works well to explain how it works because there is animations for everything. A lot of time for presentations it's just lecture slides with info dumps and pictures. An example, him showing how assembly goes to binary, he shows each part of the instruction turn into their respective bits, which provides an extremely solid connection to the opcode/operands and what they're represented with in binary.
As a CS student taking a computer organization and architecture class rn, I love seeing the stuff that I'm learning implemented like this. Keep up the good work bro :)
Im currently building my completely own 16bit cpu together with a friend and this series already helped out sooo much, im really grateful for having some one like you teaching these things in a relatively approachable way
Also key point: having r0 always be 0 is useful in not needing a "read" signal for when you do rightshift, just noticed that If you had been able to use r0, you would NEED a read line for right shift so you don't accidently use the data in r0 when "plugging in" r0 for the "second operand" (which doesn't exist) Amazing, gg as always
I've been so excited and couldn't wait for Mattbatwing's series to build my own computer that I started to search more and I already made some add programs using Program ROM and Path control using Control ROM. and started my ISA. so whatch Mattbatwing's series will be useful to synchronize knowledge. if you are excited as me, just start do learn by yourself everywhere on internet
I am very impressed with your understanding of these topics. I graduated IT university a few years ago and even though I had quite a high grade, when I watch your videos I feel stupid. With your knowledge and deep understanding you can achieve big things in your future carrier. Not only as a redstoner.
Nice work, but... writing mc assembly just to use a python script to translate that into a minecraft structure to run a program within a game inside a game engine handling graphics via OpenGL controlling a graphics device who's driver was started by the OS which was itself started by the bootloader which was itself started by the BIOS loading the MBR but only after performing a POST which was triggered by you pressing the power button which is only possible due to centuries of research by people way smarter than us. (I can't wait for someone to make a C compiler for this)
Ya Matt, great video. I'm totally loving these series but just to ask, can you do a live stream of you building with redstone. Just wanna see how redstoners actually do their build
There are a lot of people who build CPUs in minecraft: it'd be wild to see you implement the first GPU Nvidia released (or the early generations of graphics co-processors in the Japanese consoles)
ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME ME
make a compiler next so the way your assembly work is it adds 2 numbers but require third register for storing the result? that's quite weird because in real world you only need two arguments/operands it stores in the first register. there isn't eax, ebx, ecx, or stack pointer esp. I guess you're not trying to replicate x86 architecture it could be use with jumping to labels and calling functions
This is a RISC architecture-it aims to do more with less, and a large part of that is forcing every register to be general purpose. Since there's no special-purpose accumulator register, you have to design the instruction set to allow storing results in an arbitrary register. It complicates the register design slightly, but means that you can omit entire classes of instruction. That's also why the zero register is a necessity. For example, you don't need a register-to-register move instruction, since `mov r1, r2` is equivalent to `ADD r1 r0 r2` You can even bake support into the assembler for this kind of pseudo-instruction, and map the mnemonic `MOV r1 r2` to the machine code `0010 0001 0000 0010` (ADD r1 r0 r2) or any other equivalent instruction.
10:55 Now that you talk about it. I have been considering wether making an intermediate assembly language for optimisation reasons would be worth it for the compiler. It woule be good to avoid a pop instruction emediately after a push. Also avoiding multiple ADIs to r3 one after the other.
This is absolutely a thing; in fact most compilers for high-level languages will go through multiple intermediate representations and perform optimisations at each step. The most basic example is that a lot of languages compile to the LLVM intermediate representation, because then they can take advantage of the massive amount of work that’s already been put into making optimisers for that bytecode. It also has the advantage that a person making a high-level language doesn’t have to worry about the different machine codes for different computer architectures, because the people who work on LLVM have that mostly sorted already
what are you going to do in the next video? like what is the next step so i can start trying to figure that out before you make out a video of it (probably the 26th)
i finally have a video thats ACTUALLY a computer not just "HeY gUyS i BuIlT a ReDsToNe CaLculAtOR" even though the thumbnail name is "i made a redstone computer!!!"
I will have a computer architecture course for school in a few months and this is making me extremely excited for some reason (most students view it as a horrible course)
I'm having trouble with your 6-bit ALU configuration but 4-bit opcodes... But other than that, neat! EDIT: Oh yes, it's been a while since the ALU video, but nevermind. EDIT2: Yeah, really you could have just stuck with NAND and said heck the rest of the bitwise operations. xD
Hello Matt, great tutorial, but I didn't understand a thing, how do you put nombers into the register in the first place, I mean, you can put them manually but is there a way to write numbers in the register automatically with the program ? Because I'm trying for over a year to make a redstone computer on my Nintendo Switch but I never saw someone wo well talked about the instruction memory. Bye PS : (excuse my english, i'm learning, (I'm french))
my guess is that he's saving the first opcodes for some type of "write" instruction. I think the problem is that everything he built uses registers for numbers ("ADD r1 r2 r3") and he doesn't have a way to use numbers. So he might add that later.
@@ellipticalsinewave I think like you that he saves the first 8 bits of instructions to whatever instruction he wants (the first 4 bits) and the adress of the register he wanna write on (he last 4 bits), so if the instruction is to write a number, he can stops the last 8 bits from being the two read input and makes them the number that he wants to write
Regarding instruction memory, I am pretty sure that that will come at some point. However, it is "just" simple memory, in theory it would be possible to store a (tiny) program in the registers he already has. Then you need some type of pointer (a program counter) that stores the memory address of the current instruction and increments with each clock signal sent to the current register
@@mistrzdrewna233 Currently, yes because it has only mathematical and logical operations. But later it could be possible. Some thingg we have to remind are that Windows started as a CLI OS using the VGA text mode ([MS-]DOS), and that when the (real) Windows appeared, it was using framebuffer GUI.
@@foxypiratecove37350Windows on DOS did not use text mode, it still used a graphical framebuffer. When Windows became an actual OS was when Microsoft moved away from DOS and made Windows NT, which used a new kernel.
Really wish nop didn't exist on the rsa. A jmp to value in register x would be so much more usefull and nop could be a pseudo instruction for... Oh yeah, not compiling.
I can't Believe i'm learning Japanese Learning To Make A Computer Learning Arabic Learning How Balls Bounce Learning How Mazes Are Created At The Same time
And learning To Animate To Make My Kids Show Thats Like gravity Falls And Also Creating A New language 5-8# 8# 5-3 /@!&7@&3 a new coding language Say.(/"this is the language"\) Another coding assembly language Msg R1, H Msg R2, E Msg R3, L Msg R4, O TXTDIS R1 R2 R3 R3 R4 R0 R0 R0 R0 R0