RISCY BUSINESS»Episode Guide
Hello World in RISC-V ASM (2/2)
?
?

Keyboard Navigation

Global Keys

[, < / ], > Jump to previous / next episode
W, K, P / S, J, N Jump to previous / next marker
t / T Toggle theatre / SUPERtheatre mode
V Revert filter to original state Y Select link (requires manual Ctrl-c)

Menu toggling

q Quotes r References f Filter y Link c Credits

In-Menu Movement

a
w
s
d
h j k l


Quotes and References Menus

Enter Jump to timecode

Quotes, References and Credits Menus

o Open URL (in new tab)

Filter Menu

x, Space Toggle category and focus next
X, ShiftSpace Toggle category and focus previous
v Invert topics / media as per focus

Filter and Link Menus

z Toggle filter / linking mode

Credits Menu

Enter Open URL (in new tab)
0:01Welcome to the stream
🗩
0:01Welcome to the stream
🗩
0:01Welcome to the stream
🗩
0:33Review additions to the Useful Links: unistd.h1 and RISC-V: Linux Syscall Interface2
📖
0:33Review additions to the Useful Links: unistd.h1 and RISC-V: Linux Syscall Interface2
📖
0:33Review additions to the Useful Links: unistd.h1 and RISC-V: Linux Syscall Interface2
📖
2:48polytomous Unfortunately don't have time to watch, but I just came by to say that your title is great
🗪
2:48polytomous Unfortunately don't have time to watch, but I just came by to say that your title is great
🗪
2:48polytomous Unfortunately don't have time to watch, but I just came by to say that your title is great
🗪
3:02Continue reading through the RISC-V Linux Syscall Interface3
📖
3:02Continue reading through the RISC-V Linux Syscall Interface3
📖
3:02Continue reading through the RISC-V Linux Syscall Interface3
📖
4:16polytomous You best stream soon so I can actually watch you work on this project4
🗪
4:16polytomous You best stream soon so I can actually watch you work on this project4
🗪
4:16polytomous You best stream soon so I can actually watch you work on this project4
🗪
4:55Finish reading through the RISC-V Linux Syscall Interface5
📖
4:55Finish reading through the RISC-V Linux Syscall Interface5
📖
4:55Finish reading through the RISC-V Linux Syscall Interface5
📖
5:34Return to hello.S assembly and include the li and mv instructions in loop 1
5:34Return to hello.S assembly and include the li and mv instructions in loop 1
5:34Return to hello.S assembly and include the li and mv instructions in loop 1
6:45JumpOnMeh Hi, are you coding on a Raspberry Pi?
🗪
6:45JumpOnMeh Hi, are you coding on a Raspberry Pi?
🗪
6:45JumpOnMeh Hi, are you coding on a Raspberry Pi?
🗪
7:32Lower the exit call in main() from hula to assembly
7:32Lower the exit call in main() from hula to assembly
7:32Lower the exit call in main() from hula to assembly
8:58JumpOnMeh If you don't mind me asking, what is RISC-V?6
🗪
8:58JumpOnMeh If you don't mind me asking, what is RISC-V?6
🗪
8:58JumpOnMeh If you don't mind me asking, what is RISC-V?6
🗪
11:02Set up to lower the return call in main() from hula to assembly
🗩
11:02Set up to lower the return call in main() from hula to assembly
🗩
11:02Set up to lower the return call in main() from hula to assembly
🗩
11:13JumpOnMeh I'm taking a degree in comp sci right now. Kinda interested in learning new languages
🗪
11:13JumpOnMeh I'm taking a degree in comp sci right now. Kinda interested in learning new languages
🗪
11:13JumpOnMeh I'm taking a degree in comp sci right now. Kinda interested in learning new languages
🗪
11:40Plug bitwise7
🗩
11:40Plug bitwise7
🗩
11:40Plug bitwise7
🗩
13:14Lower the return call in main() from hula to assembly
13:14Lower the return call in main() from hula to assembly
13:14Lower the return call in main() from hula to assembly
14:27Compare our newly written RISC-V assembly with hello.S in the repo,8 and consult the RISC-V ELF psABI specification9 for documentation on the stack frame
📖
14:27Compare our newly written RISC-V assembly with hello.S in the repo,8 and consult the RISC-V ELF psABI specification9 for documentation on the stack frame
📖
14:27Compare our newly written RISC-V assembly with hello.S in the repo,8 and consult the RISC-V ELF psABI specification9 for documentation on the stack frame
📖
17:54Push the return address of main onto the stack
17:54Push the return address of main onto the stack
17:54Push the return address of main onto the stack
21:14A few words on generating the code for multiple returns, wondering what Per has to say about it
🗩
21:14A few words on generating the code for multiple returns, wondering what Per has to say about it
🗩
21:14A few words on generating the code for multiple returns, wondering what Per has to say about it
🗩
22:12Enable main to correctly return from all branches, and offset the stack pointer10
22:12Enable main to correctly return from all branches, and offset the stack pointer10
22:12Enable main to correctly return from all branches, and offset the stack pointer10
30:32A few words on using the temporary "a" registers, and the possible performance ramifications of being tight with register usage
🗩
30:32A few words on using the temporary "a" registers, and the possible performance ramifications of being tight with register usage
🗩
30:32A few words on using the temporary "a" registers, and the possible performance ramifications of being tight with register usage
🗩
32:31Enable main to reuse the a1 register
32:31Enable main to reuse the a1 register
32:31Enable main to reuse the a1 register
34:28Fix main to correctly break out of the print loop
34:28Fix main to correctly break out of the print loop
34:28Fix main to correctly break out of the print loop
36:48Read through hello.S to check it all looks correct
📖
36:48Read through hello.S to check it all looks correct
📖
36:48Read through hello.S to check it all looks correct
📖
40:08Fix _start to correctly pop the loaded word off the stack
40:08Fix _start to correctly pop the loaded word off the stack
40:08Fix _start to correctly pop the loaded word off the stack
40:31Finish reading through hello.S and consider it all good
📖
40:31Finish reading through hello.S and consider it all good
📖
40:31Finish reading through hello.S and consider it all good
📖
41:15Assemble our program to see assembly errors
41:15Assemble our program to see assembly errors
41:15Assemble our program to see assembly errors
42:13Remove comment and fix assembly errors
42:13Remove comment and fix assembly errors
42:13Remove comment and fix assembly errors
42:42Assemble our program to see errors on bez and beq
42:42Assemble our program to see errors on bez and beq
42:42Assemble our program to see errors on bez and beq
44:27Grab the RISC-V Reader11
🗹
44:27Grab the RISC-V Reader11
🗹
44:27Grab the RISC-V Reader11
🗹
45:24Rename bez to beqz, and fix our beq calls, in conjunction with the RISC-V Reader12
45:24Rename bez to beqz, and fix our beq calls, in conjunction with the RISC-V Reader12
45:24Rename bez to beqz, and fix our beq calls, in conjunction with the RISC-V Reader12
46:48Consult the RISC-V Reader13 for information on loading into the frame pointer
📖
46:48Consult the RISC-V Reader13 for information on loading into the frame pointer
📖
46:48Consult the RISC-V Reader13 for information on loading into the frame pointer
📖
51:12Try to make _start load 0 into s0 rather than fp
51:12Try to make _start load 0 into s0 rather than fp
51:12Try to make _start load 0 into s0 rather than fp
51:55Assemble it to see that this fixed that error
51:55Assemble it to see that this fixed that error
51:55Assemble it to see that this fixed that error
52:44Stick .section in front of .rodata as per the RISC-V Reader14
52:44Stick .section in front of .rodata as per the RISC-V Reader14
52:44Stick .section in front of .rodata as per the RISC-V Reader14
53:08Assemble it successfully
53:08Assemble it successfully
53:08Assemble it successfully
54:07Link our program with ld
54:07Link our program with ld
54:07Link our program with ld
54:20Run it to see that it works
🏃
54:20Run it to see that it works
🏃
54:20Run it to see that it works
🏃
54:41Inspect our binary
📖
54:41Inspect our binary
📖
54:41Inspect our binary
📖
56:00On writing this program as an example of code that hula should compile to
🗩
56:00On writing this program as an example of code that hula should compile to
🗩
56:00On writing this program as an example of code that hula should compile to
🗩
56:18Streamline the return code loads in main
56:18Streamline the return code loads in main
56:18Streamline the return code loads in main
1:00:37Prevent _start from zeroing out the frame pointer
1:00:37Prevent _start from zeroing out the frame pointer
1:00:37Prevent _start from zeroing out the frame pointer
1:02:23Assemble and link it
1:02:23Assemble and link it
1:02:23Assemble and link it
1:02:36Run it to see that it still works
🏃
1:02:36Run it to see that it still works
🏃
1:02:36Run it to see that it still works
🏃
1:02:45Consider the episode done, with a glimpse into the future booting Fedora directly, hand-writing the machine code for our "Hello, World!" and covering compressed instructions
🗩
1:02:45Consider the episode done, with a glimpse into the future booting Fedora directly, hand-writing the machine code for our "Hello, World!" and covering compressed instructions
🗩
1:02:45Consider the episode done, with a glimpse into the future booting Fedora directly, hand-writing the machine code for our "Hello, World!" and covering compressed instructions
🗩
1:07:32Thoughts on avoiding security vulnerabilities by owning the entire chain of production
🗩
1:07:32Thoughts on avoiding security vulnerabilities by owning the entire chain of production
🗩
1:07:32Thoughts on avoiding security vulnerabilities by owning the entire chain of production
🗩
1:12:57Further thoughts on the elegance of FORTH and its suitability for bootstrapping
🗩
1:12:57Further thoughts on the elegance of FORTH and its suitability for bootstrapping
🗩
1:12:57Further thoughts on the elegance of FORTH and its suitability for bootstrapping
🗩
1:15:50Glimpse into the future designing a custom case, streaming from our RISC-V system and building a Linux distribution for it
🗩
1:15:50Glimpse into the future designing a custom case, streaming from our RISC-V system and building a Linux distribution for it
🗩
1:15:50Glimpse into the future designing a custom case, streaming from our RISC-V system and building a Linux distribution for it
🗩
1:17:16End this episode here
🗩
1:17:16End this episode here
🗩
1:17:16End this episode here
🗩