We are currently in the process of converting the website to the new design. Some pages, like this one, are still broken. We appreciate your patience.
Bitwise»Episode Guide
RISC-V Toolchain
?
?

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:08Recap and set the stage for the day
🗩
0:08Recap and set the stage for the day
🗩
0:08Recap and set the stage for the day
🗩
1:32Demo the new command line interface, with and without the -lazy flag
🏃
1:32Demo the new command line interface, with and without the -lazy flag
🏃
1:32Demo the new command line interface, with and without the -lazy flag
🏃
3:05Review the new support for different backend targets
3:05Review the new support for different backend targets
3:05Review the new support for different backend targets
6:23A few words on appropriately deferring work
🗩
6:23A few words on appropriately deferring work
🗩
6:23A few words on appropriately deferring work
🗩
7:52Continued review of the multiple backend target support
7:52Continued review of the multiple backend target support
7:52Continued review of the multiple backend target support
10:06Review the new support of conditional compilation of source files based on target
10:06Review the new support of conditional compilation of source files based on target
10:06Review the new support of conditional compilation of source files based on target
14:47Review the libc binding contributions from twicetimes
14:47Review the libc binding contributions from twicetimes
14:47Review the libc binding contributions from twicetimes
17:17Review the new Ion bindings of a subset of SDL, and full port of Noir to Ion
17:17Review the new Ion bindings of a subset of SDL, and full port of Noir to Ion
17:17Review the new Ion bindings of a subset of SDL, and full port of Noir to Ion
22:02Review Ion's destination-oriented varargs1
22:02Review Ion's destination-oriented varargs1
22:02Review Ion's destination-oriented varargs1
29:30Step in to test_va_list() to demo Ion's varargs
🏃
29:30Step in to test_va_list() to demo Ion's varargs
🏃
29:30Step in to test_va_list() to demo Ion's varargs
🏃
30:44Explain the implementation of Ion's varargs
30:44Explain the implementation of Ion's varargs
30:44Explain the implementation of Ion's varargs
34:28Q&A
🗩
34:28Q&A
🗩
34:28Q&A
🗩
35:00nothings2 If you have "foo.ion" and "foo_linux.ion" does it compile both on linux, or only the most specific?
🗪
35:00nothings2 If you have "foo.ion" and "foo_linux.ion" does it compile both on linux, or only the most specific?
🗪
35:00nothings2 If you have "foo.ion" and "foo_linux.ion" does it compile both on linux, or only the most specific?
🗪
36:46nothings2 pervognsen We found it useful in cdep to have the ability to have a common file (e.g. for all POSIX systems) and then override only for some platforms, but I don't think you have that ability with your exclude system, which will use all files that match so you can't have a fallback?
🗪
36:46nothings2 pervognsen We found it useful in cdep to have the ability to have a common file (e.g. for all POSIX systems) and then override only for some platforms, but I don't think you have that ability with your exclude system, which will use all files that match so you can't have a fallback?
🗪
36:46nothings2 pervognsen We found it useful in cdep to have the ability to have a common file (e.g. for all POSIX systems) and then override only for some platforms, but I don't think you have that ability with your exclude system, which will use all files that match so you can't have a fallback?
🗪
38:48Demo Ion's ability to temporarily exclude files
🏃
38:48Demo Ion's ability to temporarily exclude files
🏃
38:48Demo Ion's ability to temporarily exclude files
🏃
40:47cmdrkroz pervognsen What about static constant booleans that cause conditional compilation (a la java, which doesn't compile bytecode for conditionals that are always false)
🗪
40:47cmdrkroz pervognsen What about static constant booleans that cause conditional compilation (a la java, which doesn't compile bytecode for conditionals that are always false)
🗪
40:47cmdrkroz pervognsen What about static constant booleans that cause conditional compilation (a la java, which doesn't compile bytecode for conditionals that are always false)
🗪
43:21Set up to start work on RISC-V stuff,2 adding a "riscv" project to Visual Studio
🗹
43:21Set up to start work on RISC-V stuff,2 adding a "riscv" project to Visual Studio
🗹
43:21Set up to start work on RISC-V stuff,2 adding a "riscv" project to Visual Studio
🗹
56:282.2 Base Instruction Formats3 of RISC-V vs x86
56:282.2 Base Instruction Formats3 of RISC-V vs x86
56:282.2 Base Instruction Formats3 of RISC-V vs x86
1:07:31Why are the function bits split across multiple positions?4
1:07:31Why are the function bits split across multiple positions?4
1:07:31Why are the function bits split across multiple positions?4
1:08:37xanatos387 Seems like its just to keep the rd / rs1 / rs2 always in the same spots?
🗪
1:08:37xanatos387 Seems like its just to keep the rd / rs1 / rs2 always in the same spots?
🗪
1:08:37xanatos387 Seems like its just to keep the rd / rs1 / rs2 always in the same spots?
🗪
1:08:48nothings2 pervognsen I have no idea, I can't see any downside to swapping funct3 and rd
🗪
1:08:48nothings2 pervognsen I have no idea, I can't see any downside to swapping funct3 and rd
🗪
1:08:48nothings2 pervognsen I have no idea, I can't see any downside to swapping funct3 and rd
🗪
1:09:35Different immediate fields in RISC-V's core instruction formats5
1:09:35Different immediate fields in RISC-V's core instruction formats5
1:09:35Different immediate fields in RISC-V's core instruction formats5
1:14:22rygorous It's usually "sign extend and then do something else" or "do something else then sign extend", so the sign extend is on the critical path
🗪
1:14:22rygorous It's usually "sign extend and then do something else" or "do something else then sign extend", so the sign extend is on the critical path
🗪
1:14:22rygorous It's usually "sign extend and then do something else" or "do something else then sign extend", so the sign extend is on the critical path
🗪
1:14:30nothings2 It probably does get sign extended in 64-bit?
🗪
1:14:30nothings2 It probably does get sign extended in 64-bit?
🗪
1:14:30nothings2 It probably does get sign extended in 64-bit?
🗪
1:15:122.3 Immediate Encoding Variants6
1:15:122.3 Immediate Encoding Variants6
1:15:122.3 Immediate Encoding Variants6
1:18:062.4 Integer Computational Instructions7 with a look at arithmetic right-shift of negative values in C8
1:18:062.4 Integer Computational Instructions7 with a look at arithmetic right-shift of negative values in C8
1:18:062.4 Integer Computational Instructions7 with a look at arithmetic right-shift of negative values in C8
1:24:24Demo the strange behaviour of arithmetic right-shift of -1
🏃
1:24:24Demo the strange behaviour of arithmetic right-shift of -1
🏃
1:24:24Demo the strange behaviour of arithmetic right-shift of -1
🏃
1:26:212.4 Integer Computational Instructions, continued9
1:26:212.4 Integer Computational Instructions, continued9
1:26:212.4 Integer Computational Instructions, continued9
1:28:23LUI (load upper immediate)10, with a specific example of its use in conjunction with an addi
1:28:23LUI (load upper immediate)10, with a specific example of its use in conjunction with an addi
1:28:23LUI (load upper immediate)10, with a specific example of its use in conjunction with an addi
1:34:29rygorous The lo / hi stuff needs to account for the signedness of lo
🗪
1:34:29rygorous The lo / hi stuff needs to account for the signedness of lo
🗪
1:34:29rygorous The lo / hi stuff needs to account for the signedness of lo
🗪
1:34:46rygorous i.e. if the %lo bits end up with the top bit (sign) set, you need to increment %hi by 1
🗪
1:34:46rygorous i.e. if the %lo bits end up with the top bit (sign) set, you need to increment %hi by 1
🗪
1:34:46rygorous i.e. if the %lo bits end up with the top bit (sign) set, you need to increment %hi by 1
🗪
1:35:00Continued example of LUI, and AUIPC (add upper immediate to pc)11
1:35:00Continued example of LUI, and AUIPC (add upper immediate to pc)11
1:35:00Continued example of LUI, and AUIPC (add upper immediate to pc)11
1:38:25Integer Register-Register Operations, and 2.5 Control Transfer Instructions12
1:38:25Integer Register-Register Operations, and 2.5 Control Transfer Instructions12
1:38:25Integer Register-Register Operations, and 2.5 Control Transfer Instructions12
1:43:53"jump and link" in RISC-V13 vs "call and return" in x86
1:43:53"jump and link" in RISC-V13 vs "call and return" in x86
1:43:53"jump and link" in RISC-V13 vs "call and return" in x86
1:47:56Conditional Branches14, with a comparison with cmp then jle in x86
1:47:56Conditional Branches14, with a comparison with cmp then jle in x86
1:47:56Conditional Branches14, with a comparison with cmp then jle in x86
1:53:412.6 Load and Store Instructions15
1:53:412.6 Load and Store Instructions15
1:53:412.6 Load and Store Instructions15
2:03:18Load / Store instruction addressing modes in ARM, vs RISC-V's single "mode"16
2:03:18Load / Store instruction addressing modes in ARM, vs RISC-V's single "mode"16
2:03:18Load / Store instruction addressing modes in ARM, vs RISC-V's single "mode"16
2:05:19FENCE.I with an allusion to the Privileged spec,17 and 2.8 Control and Status Register Instructions18
2:05:19FENCE.I with an allusion to the Privileged spec,17 and 2.8 Control and Status Register Instructions18
2:05:19FENCE.I with an allusion to the Privileged spec,17 and 2.8 Control and Status Register Instructions18
2:10:39Wind it down with the determination to look further into the LUI and sign-extension stuff
🗩
2:10:39Wind it down with the determination to look further into the LUI and sign-extension stuff
🗩
2:10:39Wind it down with the determination to look further into the LUI and sign-extension stuff
🗩
2:11:23Q&A
🗩
2:11:23Q&A
🗩
2:11:23Q&A
🗩
2:12:06elventhief What's your coding approach going to start as?
🗪
2:12:06elventhief What's your coding approach going to start as?
🗪
2:12:06elventhief What's your coding approach going to start as?
🗪
2:14:19miotatsu pervognsen You do just do lui followed by addi. I didn't know about the fix-up stuff Fabien mentioned but I am looking at binutils source right now and it looks like it %hi is doing the fix-up like what rygorous suggested earlier
🗪
2:14:19miotatsu pervognsen You do just do lui followed by addi. I didn't know about the fix-up stuff Fabien mentioned but I am looking at binutils source right now and it looks like it %hi is doing the fix-up like what rygorous suggested earlier
🗪
2:14:19miotatsu pervognsen You do just do lui followed by addi. I didn't know about the fix-up stuff Fabien mentioned but I am looking at binutils source right now and it looks like it %hi is doing the fix-up like what rygorous suggested earlier
🗪
2:15:06That's it
🗩
2:15:06That's it
🗩
2:15:06That's it
🗩