This is the BEST Board to Learn RISC-V Assembly.

  Рет қаралды 90,179

Low Level

Low Level

Күн бұрын

Пікірлер: 154
@gbulmer
@gbulmer 2 жыл бұрын
@Coding Neko asked a useful question. "Why learn RISC-V assembly [language]?" The video could say: 1. Learning assembly on any CPU helps understand what's _actually_ happening, and may help debugging. 2. Learning assembly for a RISC-V is rarely useful (except for point 3). C compilers for RISC ISAs mostly generate better code than an assembly programmer could write in comparable time. So C is much more productive. 3. Learning assembly for RISC-V might be valuable for writing: a bootloader, 'bare-metal' startup code (eg. code to replace program initialisation like 'C pre-pre-main') porting or implementing multi-tasking, or bootstrapping a programming language that isn't in C. There might be a few other cases eg: super-fast interrupt handlers, or porting performance-critical assembly from a different architecture. Some cases might be easier to write a C program with in-line assembly, but that still needs assembly knowledge. Problems where assembly might be essential involve resources C programs can't access (eg a CPU status register), or instructions the C compiler can't generate. However there are often 'C intrinsics' which generate those instructions, so needing assembly is rarer than it might seem. 4. Learning RISC-V ISA programming is better than learning a proprietary ISA because RISC-V _is_ open. Unlike other open ISAs, affordable hardware exists from multiple manufacturers, and RISC-V is increasingly being embedded in products. Summary: Understanding the underlying hardware helps us debug higher level languages eg C programs. The cases where assembly is _essential_ will likely become obvious quickly. 'C Intrinsics' might remove many needs for assembly language programming. Writing in-line assembly within a C program is often much easier than only raw assembly. Code space is rarely a problem compared to RAM, so don't worry unnecessarily about program size. With those facts, people have enough to reach rational. informed. decisions _(It took me under two minutes to read that out loud at my normal pace; so, not much extra.)_ It might be worth spending a minute or two on why the C compiler will likely do a better job generating code for a RISC architecture than most assembly programmers could do. I am not trying to dissuade anyone from learning RISC-V assembly language. I'm only trying clarify the reasons. Best Wishes All for 2022. (Sorry for repost, I spotted some mistakes.)
@gbulmer
@gbulmer Жыл бұрын
@methosa8818 Thank you for replying. I believe your making a useful and subtle point: even though a compiler might occasionally generate an unusual instruction that does not mean the compiler has a good enough 'model' to fully leverage complex instructions. Further, the compiler writers might avoid them for generality. The compiler writers _might_ have avoided complex instructions like STMIA or LDMIA because, AFAIK, they are implemented as 'uninterruptible'. Hence those instructions might have a significant impact on interrupt response time. Worse, if the system has unpredictable interrupt latency it might be very difficult to track down. I have no doubt you can achieve significant performance improvements using STMIA and LDMIA. I've experimented with 'vector' instructions on PowerPC to get big gains. AFAIK, the RISC-V designers elected to keep system state simple, and avoid multi-cycle uninterruptible instructions, Hence I AssUMe (but have no actual evidence) there are few circumstances in end-user applications where hand-crafted RISC-V assembler would beat C compiler generated code. Of course, I might be wrong!😀 Thanks again for replying. Best Wishes. ☮
@pascalcoole2725
@pascalcoole2725 Жыл бұрын
Now that is a real good tutorial ! No long bullshit talks just to increase viewtime... straigth to the point, enough to get going, the rest is just a mather of figure it out yourselve (if unable, you're unable to code any assembly anyhow)
@ikefir
@ikefir 2 жыл бұрын
A deeper dive into linker scripts will be awesome as well. As always great video! Archived.
@LowLevelTV
@LowLevelTV 2 жыл бұрын
Great suggestion!
@aakashhemadri
@aakashhemadri 2 жыл бұрын
Yes a deep dive would be nice, a more general view into why and how they work
@ragd4L
@ragd4L 2 жыл бұрын
And bootloaders too
@kayakMike1000
@kayakMike1000 2 жыл бұрын
Good idea.
@albertmagician8613
@albertmagician8613 9 ай бұрын
There is an insane expertise needed to use gcc linker scripts, while this should be totally superfluous for assembler.
@rampage_sl
@rampage_sl 2 жыл бұрын
I feel lucky to find this channel.
@KenJackson_US
@KenJackson_US 2 жыл бұрын
The finished code is shown at 10:06. Don't you need something after calling the function *("jal puts")?* I would think jumping to halt *("j halt")* would be appropriate. As it is, it looks like you'll fall through and execute *puts()* again with no return address on the stack.
@BruceHoult
@BruceHoult 2 жыл бұрын
Kind of, but it turns out it's harmless. This code doesn't actually use the stack, or RAM at all. The jal puts the return address in the RA register, and ret jumps to whatever address is in RA. And nothing in puts changes RA, so it will actually execute puts in an infinite loop. A0 will still be pointing to the null, and so the printing and incrementing of A0 will be skipped. It's a 4 instruction infinite loop. (5 actually, as that li UART_BASE expands to an AUIPC and an ADDI)
@JGHFunRun
@JGHFunRun Жыл бұрын
I apparently noticed this and moved halt so that it was right after _start. I also, far more consciously, forced _start to be at the start by creating a .text._start section. It doesn't matter for this project but if there are any other files it could be an issue, and since there are other unused sections I decided to add it
@aliraheem6135
@aliraheem6135 2 жыл бұрын
I might be missing something but wouldn't it be better to explicitly jump to halt after returning from puts. Works fine here but it's cycling through puts_leave with a0 pointing to the null, but in a more complicated program you might run some code without intending to.
@BruceHoult
@BruceHoult 2 жыл бұрын
You're absolutely right. The ret jumps back to the instruction after the jal, which is the start of puts. It loads UART_BASE again, loads the null again, jumps to puts_leave, and the ret jumps to whatever is in RA which is still the address of puts. Forever, since a0 is not incremented. Another fun fact: this program does not use RAM at all, including the stack, so initialising SP was a waste of time :-)
@aakashhemadri
@aakashhemadri 2 жыл бұрын
Amazing! Waiting for just this tut
@hex8675
@hex8675 9 ай бұрын
What starter kit would you recommend these days? Sparkfun hasn't had them in a bit and they don't seem to have an estimate for when they will be back.
@markmanning2921
@markmanning2921 Ай бұрын
Wrote a nice risc-v assembler in forth and was going to write a risc-v forth compiler + metacompiler but work got in the way lol. Its not abandoned...
@NootNooter
@NootNooter Жыл бұрын
At 11:25, I do not understand how you got to the address 0x20010000? Where is this mentioned? I searched for the manual pdf of the RED-V SiFive chip and it said in chapter 5 "Boot Process" a table, but it says a very different number? Edit: I was looking at G003 manual. In the G002 manual for the E310 it did say 0x20010000.
@davidgrisez
@davidgrisez 2 жыл бұрын
It has been a very long time since I have done anything in assembly language. Many years ago I had a Heathkit 89 Computer which had a Z80 processor. I did do some simple things in Intel 8080 assembly language.
@jasonlhb
@jasonlhb 2 жыл бұрын
Z80, i8080...I learned these 2 during senior high. I bet you probably was born in 60s, right?
@davidgrisez
@davidgrisez 2 жыл бұрын
@@jasonlhb I am older than that, I was born in 1951. The very first computer I did any programming on was an IBM 1620 at a junior college.
@KenJackson_US
@KenJackson_US 2 жыл бұрын
Oh man! Those were the days, David.
@OpenGL4ever
@OpenGL4ever Жыл бұрын
@@KenJackson_US These were the times when it was easy to get rich by programming as the software projects to be programmed were much smaller than today. Nowadays it often takes a team of programmers and man-years to implement a larger successful project.
@icryo
@icryo 2 жыл бұрын
Concise! Keep it up! Very High Quality!
@LowLevelTV
@LowLevelTV 2 жыл бұрын
Thanks, will do!
@aakashhemadri
@aakashhemadri 2 жыл бұрын
Could you perhaps look into trying out running riscv code on a Longan Nano a gd32v board. Is quite inexpensive and great for beginners!
@doomsk888
@doomsk888 2 жыл бұрын
I would love to ser that as well. Struggled some time ago to make assembly code to work on it. This video gave me hope back to try again though
@edgeeffect
@edgeeffect 2 жыл бұрын
Thanks.... I'm looking for a less featured, lower priced board.... I'll havea look for a Longan.
@turanamo
@turanamo 2 жыл бұрын
+1
@diegomasotti7517
@diegomasotti7517 2 жыл бұрын
Wait wait... wait. Multithreaded programs in assembler? Is anyone that masochist to even try that?
@LowLevelTV
@LowLevelTV 2 жыл бұрын
It’s very possible!
@dlol.
@dlol. 2 жыл бұрын
@U P i fear you keep it up!
@Jair_inacio_Neto_Teixeira
@Jair_inacio_Neto_Teixeira 2 жыл бұрын
@U “Amali L” N can you name a book where I can find such a theme? I'm kind of masochist when it comes to low level haha
@kayakMike1000
@kayakMike1000 2 жыл бұрын
yes it's hard, but running io stuff on a thread is great no matter c or assembly. It feels so good when you get it to work!
@BruceHoult
@BruceHoult 2 жыл бұрын
all programs, including multithreaded ones, are ultimately in assembly language. You can't implement a multithreading OS or library *without* hand written assembly language.
@kevinclaypool6345
@kevinclaypool6345 2 жыл бұрын
I really really really appreciate that you did this video for the asm newbz to riscv, but if I'm being honest, I left feeling even more intimidated by the amount of code I was unfamiliar with...
@embeddedbastler6406
@embeddedbastler6406 2 жыл бұрын
So QEMU automatically prints the data that is written to UART to stdout?
@LowLevelTV
@LowLevelTV 2 жыл бұрын
Yup!
@brunoparis10
@brunoparis10 2 жыл бұрын
i don't see text after
@BruceHoult
@BruceHoult 2 жыл бұрын
If you specify "-machine sifive_e"
@bennguyen1313
@bennguyen1313 9 ай бұрын
I like the $8 ESP32-C3FH4 RGB board.. it has a Risc-V but also includes Wifi, Bluetooth5, couple buttons, 25 leds, etc. However, not sure how debugging works on it. For example, I understand gdbserver runs on the target cpu, and that the host cpu must interact with it using openocd/jtag... but what's the general approach on setting that up? I know Percepio sells a "Tracealyzer" that can save snapshots of your FreeRTOS project, for analysis. Perhaps the same is true with CodeWalker and Micrium uC/Probe? I'd like to see real-time live streaming of the data. BTW, any thoughts on the 'Timeless Debugging' talk given by the legendary George Hotz?
@djsbriscoe
@djsbriscoe 8 ай бұрын
Which board would you recommend TODAY? This particular board appears to be unavailable. Thanks.
@reptilicusrex4748
@reptilicusrex4748 2 жыл бұрын
Excellent introduction. A deeper dive into this board/programming would be appreciated. Also as Trumpet Sock mentioned, a deeper dive into linker scripts would also be appreciated.
@edgeeffect
@edgeeffect 2 жыл бұрын
Yeah.... linker scripts are a "can of worms".... I've seen some tiny, simple linker scripts that just blow my mind in their sheer size. :)
@ClearerThanMud
@ClearerThanMud 2 жыл бұрын
I think learning SOME assembly language will teach you a lot about what's actually happening under the hood. And if you are trying to create very fast code, you can ask Compiler Explorer to show you the assembly code for your Rust or C code and see whether it is what you expect. OK, but that would be true for ANY assembly language, so why RISC-V? First, because RISC-V is about the easiest, most straightforward ISA you will find. You won't gain any extra insight into what the hardware does by learning a mess like the x86 ISA, and that would be a LOT more effort. And RISC-V is probably going to be a BIG DEAL in small embedded systems, so knowing it could help you in your career a few years out.
@OpenGL4ever
@OpenGL4ever Жыл бұрын
Maybe you won't gain any extra insight into what the hardware does by learning x86 ISA, x86 ISA uses microops anyway, but you will learn and understand what the compiler does and you don't have to buy extra hardware if you already have an x86 computer. There's nothing wrong in learning just both. And they both have a different target market anyway. You will very likely not program in x86 assembly for embedded systems. Today x86 is for performance-hungry or large software tasks with plenty of CPU power and memory. Risc-V has to serve this field first and when it does that, then you will have a very special workplace, because the majority use x86 for something like that anyway. So there is no x86 or RISC-V decision to be made, the two usually just don't get in each other's way at the moment.
@mikafoxx2717
@mikafoxx2717 Жыл бұрын
@@OpenGL4ever yeah, basically if you're learning assembly, it should be ARM m0, or RISC-V, or maybe esp32 whatever else x86 would be silly unless you're in the habit of reverse engineering software
@sparkybrit
@sparkybrit Жыл бұрын
Nice! Why not define a .uart section in the linker script to make everything relocatable?
@pj4x69
@pj4x69 2 жыл бұрын
Hey very nice tutorial 👍 Could you maybe make a tutorial how to use the gpio on the sparkfun red-v
@chillbro2275
@chillbro2275 2 жыл бұрын
Wow! So does the document saying how to link a program to the board come with the board?
@JeffersonRodrigoo
@JeffersonRodrigoo 2 жыл бұрын
Great content and didatics!
@ostanin_vadym
@ostanin_vadym 2 жыл бұрын
Thanks for the content
@stonered8760
@stonered8760 Жыл бұрын
However the capacity of the on-board flash chip is 32 Megabits(Mb) instead of Megabytes(MB) according to the official schematic.
@edgeeffect
@edgeeffect 2 жыл бұрын
This is much easier than the complex fooling around I have to do on an STM-32.... it's like a return to the simplicity of the AVR.... maybe even simpler.... I certainly have to look into this chip.... it's not just the RISC-V, it's how easy they've chosen to structure the microcontroller's peripherals too. NOW if someone would just bring out a board without all that SPI flash, USB port and other things I don't need for Blue Pill prices.... now that would be delicious.
@theVSORIGINALs
@theVSORIGINALs 2 жыл бұрын
how much should i know to do this i m taking a computer science degree and i m in last year i know only basic commands like ld,sw,jal, etc
@chillbro2275
@chillbro2275 2 жыл бұрын
Holy cow, i was already subscribed?!? haha
@alurma
@alurma 2 жыл бұрын
Thank you very much!
@rallokkcaz
@rallokkcaz 2 жыл бұрын
Low level gang!
@str.haysam
@str.haysam 2 жыл бұрын
Hope you do a video how to setup rust to code for a RISC-V
@johnasleyw
@johnasleyw 8 ай бұрын
Thank you
@EdwinFairchild
@EdwinFairchild 2 жыл бұрын
you didnt mention how much ram that puppy has?
@minirop
@minirop 2 жыл бұрын
sparkfun's store says: 16 KB Instruction Cache, 16 KB Data Scratchpad
@EdwinFairchild
@EdwinFairchild 2 жыл бұрын
@@minirop thanks, i have not heard the term scratchpad before at least not in embedded.. interesting
@cccmmm1234
@cccmmm1234 2 жыл бұрын
It is RAM that can be used as RAM or as data cache.
@BruceHoult
@BruceHoult 2 жыл бұрын
The funny thing is this program doesn't even touch the 16 KB of RAM once. Not even the stack he sets up. It'll go a long long way like that.
@LiamDennehy
@LiamDennehy Жыл бұрын
It would be nice to see that difference between the compiled binary and the hex file.
@cem_kaya
@cem_kaya 2 жыл бұрын
does it have any type of cas or faa instructions for multi threaded data structures ?
@BruceHoult
@BruceHoult 2 жыл бұрын
The chip implements LR/SC and AMO{SWAP,ADD,AND,OR,XOR,MAX,MIN}
@cem_kaya
@cem_kaya 2 жыл бұрын
@@BruceHoult have to read about it thanks
@kacperfilipek8461
@kacperfilipek8461 2 жыл бұрын
Looking at a thumbnail I thought the red board was MSP430
@LowLevelTV
@LowLevelTV 2 жыл бұрын
It looks VERY similar.
@abdosoliman
@abdosoliman 7 ай бұрын
would it kill hardware designers to agree on a similar memory structure, just imagine If there was an IEEE standard for Memory addresses for stack, heap, code, etc. it should be theoretically possible, at least for civilian commercially available hardware. wouldn't that be nice not having to go grab a spec sheet to write a linker file?
@captainswing4040
@captainswing4040 2 жыл бұрын
please make a detailed video on qemu emulation please please
@olafbaeyens8955
@olafbaeyens8955 Жыл бұрын
On the physical board I am somehow stuck. In your example you have msg in .rodata (that is read-only) and that works If I move msg in .data (that is read/writable) then a letter "C" is written and not the string, so somehow the message string is not there or I have a wrong pointer. I think I need a boot.s that is more extensive than setting up a stack and getting the Hardware thread 0. I assume that .rodata is running in flash memory and .data needs to get copied, but I can't find the way to do it so far by surfing on the internet. A more advanced boot.s example would be nice in this demonstration.
@olafbaeyens8955
@olafbaeyens8955 Жыл бұрын
I cracked it, on the board the linker file must be more extensive and you also need a boot.s that copies the .data from flash to SRAM and clear all bytes in .bss. I used chatGPT to help me in this. ChatGPT does causes some issues, don't trust the code it generates. The linker file is too big to post here and I don't have a working example to show off worthy to be shown :-) .rodata = constants that is red-only and only reside in FLASH .data = data that is initialized with data you copy from flash to SRAM once but free to be modified later on. .bss = data in SRAM that is just set to 0 just before you enter main.
@olafbaeyens8955
@olafbaeyens8955 Жыл бұрын
In the linker file you need something like this: MEMORY { FLASH (rx) : ORIGIN = 0x20010000, LENGTH = 16K RAM (rwx) : ORIGIN = 0x80000000, LENGTH = 16K }
@olafbaeyens8955
@olafbaeyens8955 Жыл бұрын
In the sections you need something like this: /* Code and read-only data goes into FLASH */ .text : { _stext = .; KEEP(*(.text)) KEEP(*(.text.*)) KEEP(*(.rodata)) KEEP(*(.rodata.*)) _etext = .; } > FLASH
@olafbaeyens8955
@olafbaeyens8955 Жыл бұрын
For data you need something like this: /* Read-write data goes into RAM */ .data : { _sdata = .; _data_flash = LOADADDR(.data); KEEP(*(.data)) KEEP(*(.data.*)) _edata = .; } > RAM AT> FLASH
@olafbaeyens8955
@olafbaeyens8955 Жыл бұрын
BSS: /* Uninitialized data goes into RAM */ .bss : { _sbss = .; KEEP(*(.bss)) KEEP(*(.bss.*)) KEEP(*(.noinit)) _ebss = .; } > RAM
@echoptic775
@echoptic775 2 жыл бұрын
Why did you provide the _end symbolwhen you never used it?
@ScreechingBagel
@ScreechingBagel Ай бұрын
3:18 four keys + enter pressed, it's probably "user"
@tetraquark2402
@tetraquark2402 2 жыл бұрын
Still trying to get my raspberry pico to work with something more complicated than blink so I'll skip getting one for now
@StevenJoseph-ob6ru
@StevenJoseph-ob6ru 7 ай бұрын
Nice!
@marcsmithsonian9773
@marcsmithsonian9773 Жыл бұрын
Can yiu code doom to see if it moves faster then on my 150mhx SGI indy
@platin2148
@platin2148 2 жыл бұрын
Suspect there are flags for clang to build too riscv?
@BruceHoult
@BruceHoult 2 жыл бұрын
Absolutely. LLVM/Clang promoted RISC-V from experimental to official in February 2019.
@rohithvishaal
@rohithvishaal Жыл бұрын
Hey this is random video to text on but can anybody guide me on how to start understanding low level stuff. Let's say i want to reach a level where I can program an micro controller in assembly by looking at its documentation 😅
@adsick_ua
@adsick_ua 2 жыл бұрын
Nice vid, but I'm not so deep in low level asm stuff, I'm a Rust programmer. What would you recommend to watch/read to understand what is going 'ere? (I'm interested in RISC-V as an open architecture)
@somberrhombus
@somberrhombus 2 жыл бұрын
I keep wanting to buy one of these and a book on RISC-V assembly, but it feels like I should wait for something a little more powerful.
@OpenGL4ever
@OpenGL4ever Жыл бұрын
You can buy a book on RISC-V assembly and use QEMU RISC-V emulation on your PC until you found something more powerful. Don't wait for the hardware.
@somberrhombus
@somberrhombus Жыл бұрын
@@OpenGL4ever Its funny that in the time that has passed since my comment I've gotten a fairly powerful quad core RISC-V board.
@OpenGL4ever
@OpenGL4ever Жыл бұрын
@@somberrhombus Well then, nice to hear.
@ElectronicFanArm
@ElectronicFanArm 4 ай бұрын
Oh god clickbait or what!!! Today tons of ESP32 and RISC V recomendations why!!! xD If I want to use ARM Should I move to RISC-V?
@afnDavid
@afnDavid 2 жыл бұрын
How many boards have you zapped with poor handling from ESD (static discourage)?
@nacnud_
@nacnud_ 2 жыл бұрын
Could have jumped to halt at the end.
@parrotraiser6541
@parrotraiser6541 Жыл бұрын
A little bit of forethought before leaping into programming can save a lot of keystrokes and debugging time. A lot of that code looks like boilerplate that will be used repeatedy, in every program for the board. It should be set up beforehand, then included as a starting step, by whatever mechanism the local editor supports. The same is true of the compilation and linking steps. A lot of unchaninging operations, with only the program name changing. All that should be in a script.
@BruceHoult
@BruceHoult Жыл бұрын
I don't have the Sparkfun board but I have SiFIve's HiFive1 which uses the same chip. Their SDK has a start.s that does the boilerplate setup and the same for the linker script. I'd be surprised if Sparkfun doesn't give you the same stuff too, but it's still nice to see what the minimum actually needed is. He didn't quite make it as the check for HART ID 0 is not necessary on this single-CPU board.
@esra_erimez
@esra_erimez 2 жыл бұрын
This is all well and good, but how do you write a preemptive multitasking operation system for it in assembler? Subbed
@KenJackson_US
@KenJackson_US 2 жыл бұрын
That's more involved.
@olafbaeyens8955
@olafbaeyens8955 Жыл бұрын
Why learn RISK-V? Or any other assembler language? 1. Because assembler is way more easy than any programming language. No OOP, No traits, no abstract syntax, no 1000 dependency packages, different frameworks.... Just you and your processor. 2. Force your brain to get out fo your comfort zone and become more creative. Even though you may never create big projects in assembler unless you are a virus writer. The knowledge can even help you create better high level code. 3. You are more focuses on your code you write. Every deploy is slow to debug so you must look at your code mere thoroughly and understand the code way better. Sloppy code will punish you big time, so quality code is enforced. 4. Learn to create efficient code, not bloated code like you used to have in any higher level programs. Your high level projects will improve.
@rockpadstudios
@rockpadstudios 2 жыл бұрын
nice vid
@cccmmm1234
@cccmmm1234 2 жыл бұрын
150 MHz early laptop? I wish... The first laptop I used was 10MHz or so.
@BruceHoult
@BruceHoult 2 жыл бұрын
Yup. My first laptop was a PowerBook 100, with a 16 MHz 68000 that took 4 clock cycles for the simplest instructions e.g. move one register to another, or add/sub/and/or/xor one 16 bit register to another. 32 bit operations took 8 cycles minimum. More complex instructions could take 12, 16, 20 cycles ... So, compared to this 150 MHz 150 MIPS 32 bit RISC-V chip, the M68000 was effectively 1 MHz (or 1 MIPS)
@OpenGL4ever
@OpenGL4ever Жыл бұрын
@@BruceHoult A 386DX 16 MHz had about 5,4 MIPS and an integrated MMU.
@BruceHoult
@BruceHoult Жыл бұрын
@@OpenGL4ever so did the 68030, but those are six or seven years after the 68000 and 8086, and much more complex chips. According to Intel's own 80386 Hardware Reference Manual "At 16 MHz, the 80386 is capable of executing at sustained rates of three to four million instructions per second". That sounds about right to me. But in any case, all these CPUs are at least 50 times slower than the FE310 on the microcontroller board shown in this video.
@OpenGL4ever
@OpenGL4ever Жыл бұрын
@@BruceHoult The 386 was released in 1985. The 68030 in 1987. The MIPS numbers for the 386DX are from the WP. 3 to 4 MIPS are the 16 MHz 386SX version or later 80386SL, not DX. The 33 MHz version delivers 11,4 MIPS and these numbers are quite correct, because the 486DX has more than double the speed at the same clock rate. (27 MIPS) Of course. Even my 16 year old Nokia N810 Internet Tablet with a OMAP2420 - 330 MHz ARM1136 processor that was released in October 2007 is faster than the old 386.
@hand-eye4517
@hand-eye4517 Жыл бұрын
can you make an update please sir ? there is a shortage of this type of content ! and there is a big updaTe to the hardware available
@Killputin777
@Killputin777 2 жыл бұрын
what language is this? *.s file?
@cccmmm1234
@cccmmm1234 2 жыл бұрын
Assembly
@viktorstojanovic9007
@viktorstojanovic9007 2 жыл бұрын
.s means its an assembler source file
@Killputin777
@Killputin777 2 жыл бұрын
@@viktorstojanovic9007 thank you sir)
@youtubeviewer7077
@youtubeviewer7077 9 ай бұрын
taque is the french word for hyphen.
@billshedd55
@billshedd55 Ай бұрын
They don’t make those anymore.
@bobbastian760
@bobbastian760 7 ай бұрын
Red 5, Nigel Mansell
@albertmagician8613
@albertmagician8613 9 ай бұрын
Use larger characters. 24 by 80 is ideal.
@abhinavlal3252
@abhinavlal3252 2 жыл бұрын
Which linux distro are you using?
@OpenGL4ever
@OpenGL4ever Жыл бұрын
This doesn't matter. But i can highly recommend Debian stable for security and time saving reasons.
@MuStevenPlay
@MuStevenPlay 2 жыл бұрын
thank u i love u
@jhoughjr1
@jhoughjr1 2 жыл бұрын
Not Five, V for Versatile!
@AndrewHelgeCox
@AndrewHelgeCox Жыл бұрын
New ESP32 devices are based on risc-v.
@ogg3k594
@ogg3k594 2 жыл бұрын
The blur on video is so horrible.
@BrianG61UK
@BrianG61UK Жыл бұрын
You call (jal) your puts routine and then NOTHING! You just let it fall into the puts routine again!! Surely you want to halt or loop or something after calling puts?
@BruceHoult
@BruceHoult Жыл бұрын
he gets lucky with an infinite loop with t1 pointing at the null at the end of the string, jumping to the exit label since the byte is 0, which returns back to the start of puts again (since nothing ever changes ra after the jal).
@233kosta
@233kosta Жыл бұрын
Step 1: Implement a RISC-V CPU in FPGA Step 2: learn RISC-V asm Am I doing this right? 😂
@mikafoxx2717
@mikafoxx2717 Жыл бұрын
You'd best be familiar with the ASM before designing the chip. :p But for real, the elegance of the base Isa is amazing for design. Set bits for register select, sign extension, and set shift offsets from instruction immediates to registers..
@233kosta
@233kosta Жыл бұрын
@@mikafoxx2717 Oh, I wouldn't be designing it, just lifting an FPGA implementation of an existing one.
@DFX2KX
@DFX2KX Жыл бұрын
that is not nearly as convoluted as I would have imagined.
@espero_dev
@espero_dev 2 жыл бұрын
Hmm VMware or virtualbox but it looks more like VMware
@TuxieBSOD
@TuxieBSOD 2 жыл бұрын
"Same price" 42$ is not the same price xD
@codingneko
@codingneko 2 жыл бұрын
I don't...What's the point of this? Why would you code RISC-V Assembly instead of C? is there any actual advantage or is it literally just to flex?
@LowLevelTV
@LowLevelTV 2 жыл бұрын
To learn! (It’s in the channel name)
@penguin1714
@penguin1714 2 жыл бұрын
It's to learn how the hardware works... Love videos like this, but it'd be neat if he mentioned where he was getting some of this information from. Feels a lot an unironic version of the "how to code minecraft in java" meme because it looks like he's just typing code from another page without any reference as to where he got any of the information. It's still a neat video, though. Not shitting on it or anything
@warlockd
@warlockd 2 жыл бұрын
One of the neet features of the RSIC-V is since its so FPGA friendly, you can put in your own instructions. Usally they are DSP/vector custom packages that quire special libs but can do crazy things like multiply a grid of 32 floats in one cycle.
@codingneko
@codingneko 2 жыл бұрын
@@warlockd I didn't understand that but if there are actual reasons like what you seemingly mentioned to use this over a higher level programming language I'll stfu xd
@rvgeerligs
@rvgeerligs 7 ай бұрын
Look this stupid. Because it is reduced instructionset it is much more code to get to the same goal with cisc. What you want is a higher level language like c or even basic to generate the assembly for you.
@godnyx117
@godnyx117 Жыл бұрын
The best board to learn RISCV is QEMU.
@kefsound
@kefsound 2 жыл бұрын
Stop saying "boom".
@JG-nm9zk
@JG-nm9zk 2 жыл бұрын
ok boomer
rust runs on EVERYTHING (no operating system, just Rust)
18:10
Low Level
Рет қаралды 368 М.
EEVblog 1524 - The 10 CENT RISC V Processor! CH32V003
19:55
EEVblog
Рет қаралды 313 М.
黑天使被操控了#short #angel #clown
00:40
Super Beauty team
Рет қаралды 61 МЛН
It works #beatbox #tiktok
00:34
BeatboxJCOP
Рет қаралды 41 МЛН
Cheerleader Transformation That Left Everyone Speechless! #shorts
00:27
Fabiosa Best Lifehacks
Рет қаралды 16 МЛН
Chain Game Strong ⛓️
00:21
Anwar Jibawi
Рет қаралды 41 МЛН
HiFive Premier P550: Powerful SiFive RISC-V Development Board
23:31
ExplainingComputers
Рет қаралды 58 М.
Developing the RISC-V Framework Laptop Mainboard
24:59
Framework
Рет қаралды 156 М.
Arm vs RISC V- What You Need to Know
22:19
Gary Explains
Рет қаралды 309 М.
The PC industry is changing: RISC-V goes mainstream
15:20
Jeff Geerling
Рет қаралды 357 М.
#371 RISC-V: How much is open source? Featuring the new ESP32-C3
25:25
Andreas Spiess
Рет қаралды 219 М.
Cheap Risc-V Supercluster for $2 (DIY, CH32V003)
9:02
bitluni
Рет қаралды 257 М.
RISC-V isn't killing Arm (yet)
9:05
Jeff Geerling
Рет қаралды 361 М.
The Magic of RISC-V Vector Processing
16:56
LaurieWired
Рет қаралды 353 М.
Building High-Performance RISC-V Cores for Everything
19:01
TechTechPotato
Рет қаралды 105 М.
黑天使被操控了#short #angel #clown
00:40
Super Beauty team
Рет қаралды 61 МЛН