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
More Compiler Hacking
?
?

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:00Recap and set the stage for the day
🗩
0:00Recap and set the stage for the day
🗩
0:00Recap and set the stage for the day
🗩
0:30Review the newly explicit package namespace semantics, and the current status of anonymous structs / unions
📖
0:30Review the newly explicit package namespace semantics, and the current status of anonymous structs / unions
📖
0:30Review the newly explicit package namespace semantics, and the current status of anonymous structs / unions
📖
3:13Review the changed implementation of anonymous structs / unions
📖
3:13Review the changed implementation of anonymous structs / unions
📖
3:13Review the changed implementation of anonymous structs / unions
📖
5:09Demo the shortcoming of the current implementation, regarding incorrect layout of anonymous structs / unions
📖
5:09Demo the shortcoming of the current implementation, regarding incorrect layout of anonymous structs / unions
📖
5:09Demo the shortcoming of the current implementation, regarding incorrect layout of anonymous structs / unions
📖
6:12Review bug fix in type_complete_union() regarding struct member alignment
📖
6:12Review bug fix in type_complete_union() regarding struct member alignment
📖
6:12Review bug fix in type_complete_union() regarding struct member alignment
📖
7:48Set up to correctly lay out anonymous structs / unions
🗩
7:48Set up to correctly lay out anonymous structs / unions
🗩
7:48Set up to correctly lay out anonymous structs / unions
🗩
11:41Dive into enabling our aggregate code to produce correctly aligned anonymous structs / unions
11:41Dive into enabling our aggregate code to produce correctly aligned anonymous structs / unions
11:41Dive into enabling our aggregate code to produce correctly aligned anonymous structs / unions
31:16Set up to add some anonymous structs / unions test cases to test1.ion
31:16Set up to add some anonymous structs / unions test cases to test1.ion
31:16Set up to add some anonymous structs / unions test cases to test1.ion
32:13Run it and hit our assertion in cdecl_name()
🏃
32:13Run it and hit our assertion in cdecl_name()
🏃
32:13Run it and hit our assertion in cdecl_name()
🏃
32:34Temporarily skip gen_typeinfos() and introduce test_token()
32:34Temporarily skip gen_typeinfos() and introduce test_token()
32:34Temporarily skip gen_typeinfos() and introduce test_token()
33:24Step through complete_aggregate() to type_complete_union() to see that they correctly align our test anonymous struct / union
🏃
33:24Step through complete_aggregate() to type_complete_union() to see that they correctly align our test anonymous struct / union
🏃
33:24Step through complete_aggregate() to type_complete_union() to see that they correctly align our test anonymous struct / union
🏃
34:25Enable complete_aggregate() to push a subaggregate_type
34:25Enable complete_aggregate() to push a subaggregate_type
34:25Enable complete_aggregate() to push a subaggregate_type
35:18Step through type_complete_struct() to see that it completes our type, but is not inlining the fields into the parent struct
🏃
35:18Step through type_complete_struct() to see that it completes our type, but is not inlining the fields into the parent struct
🏃
35:18Step through type_complete_struct() to see that it completes our type, but is not inlining the fields into the parent struct
🏃
36:34Introduce add_type_fields() to inline the fields of anonymous struct / unions into the parent
36:34Introduce add_type_fields() to inline the fields of anonymous struct / unions into the parent
36:34Introduce add_type_fields() to inline the fields of anonymous struct / unions into the parent
47:52Test our anonymous struct alignment, to see that it is not correct
🏃
🖮
47:52Test our anonymous struct alignment, to see that it is not correct
🏃
🖮
47:52Test our anonymous struct alignment, to see that it is not correct
🏃
🖮
48:56Fix add_type_fields(), type_complete_struct() and type_complete_union() to correctly offset our fields
48:56Fix add_type_fields(), type_complete_struct() and type_complete_union() to correctly offset our fields
48:56Fix add_type_fields(), type_complete_struct() and type_complete_union() to correctly offset our fields
53:57Test our anonymous struct field alignment to find that it is not correct
🏃
🖮
53:57Test our anonymous struct field alignment to find that it is not correct
🏃
🖮
53:57Test our anonymous struct field alignment to find that it is not correct
🏃
🖮
56:10Step into type_complete_union() to inspect its data
🏃
🖮
56:10Step into type_complete_union() to inspect its data
🏃
🖮
56:10Step into type_complete_union() to inspect its data
🏃
🖮
56:46Fix type_complete_union() and type_complete_struct() to align and size our fields after inlining them into the parent
56:46Fix type_complete_union() and type_complete_struct() to align and size our fields after inlining them into the parent
56:46Fix type_complete_union() and type_complete_struct() to align and size our fields after inlining them into the parent
58:09Test it to find that it all works
🏃
🖮
58:09Test it to find that it all works
🏃
🖮
58:09Test it to find that it all works
🏃
🖮
59:04Enable gen_typeinfos() to generate type info for anonymous structs / unions
59:04Enable gen_typeinfos() to generate type info for anonymous structs / unions
59:04Enable gen_typeinfos() to generate type info for anonymous structs / unions
1:00:23Check out our generated type info to see that our typeinfo_table[] is wrong
📖
1:00:23Check out our generated type info to see that our typeinfo_table[] is wrong
📖
1:00:23Check out our generated type info to see that our typeinfo_table[] is wrong
📖
1:01:07Enable is_excluded_typeinfo() to handle defined and anonymous structs / unions differently
1:01:07Enable is_excluded_typeinfo() to handle defined and anonymous structs / unions differently
1:01:07Enable is_excluded_typeinfo() to handle defined and anonymous structs / unions differently
1:01:46Check out our generated type info to see that our anonymous types don't show up
📖
1:01:46Check out our generated type info to see that our anonymous types don't show up
📖
1:01:46Check out our generated type info to see that our anonymous types don't show up
📖
1:03:50Q&A
🗩
1:03:50Q&A
🗩
1:03:50Q&A
🗩
1:03:58xanatos387 So, what is the general plan for the next few weeks? We were working on the simulator for a bit; we still need to create our own HDL as well? Will creating the HDL be the start of the hardware / FPGA section? How far do we plan to take the simulator in the near term?
🗪
1:03:58xanatos387 So, what is the general plan for the next few weeks? We were working on the simulator for a bit; we still need to create our own HDL as well? Will creating the HDL be the start of the hardware / FPGA section? How far do we plan to take the simulator in the near term?
🗪
1:03:58xanatos387 So, what is the general plan for the next few weeks? We were working on the simulator for a bit; we still need to create our own HDL as well? Will creating the HDL be the start of the hardware / FPGA section? How far do we plan to take the simulator in the near term?
🗪
1:08:58Read through our anonymous struct / union code
📖
1:08:58Read through our anonymous struct / union code
📖
1:08:58Read through our anonymous struct / union code
📖
1:09:57Demo the bug in complete_aggregate() regarding undetected duplicate fields when anonymous structs / unions are in the mix
🏃
1:09:57Demo the bug in complete_aggregate() regarding undetected duplicate fields when anonymous structs / unions are in the mix
🏃
1:09:57Demo the bug in complete_aggregate() regarding undetected duplicate fields when anonymous structs / unions are in the mix
🏃
1:10:26Fix has_duplicate_fields() to handle anonymous types
1:10:26Fix has_duplicate_fields() to handle anonymous types
1:10:26Fix has_duplicate_fields() to handle anonymous types
1:11:44Run it to see that it detects duplicate fields across subtypes
🏃
1:11:44Run it to see that it detects duplicate fields across subtypes
🏃
1:11:44Run it to see that it detects duplicate fields across subtypes
🏃
1:13:02Rename subaggregate_type to item_type in complete_type()
1:13:02Rename subaggregate_type to item_type in complete_type()
1:13:02Rename subaggregate_type to item_type in complete_type()
1:13:20Glance over the new anonymous struct / union code one more time, to see that it looks reasonable
📖
1:13:20Glance over the new anonymous struct / union code one more time, to see that it looks reasonable
📖
1:13:20Glance over the new anonymous struct / union code one more time, to see that it looks reasonable
📖
1:14:55miotatsu The forth implementation is going to be fun. I've been planning to translate jonesforth to RISC-V asm on my own series as an early exercise
🗪
1:14:55miotatsu The forth implementation is going to be fun. I've been planning to translate jonesforth to RISC-V asm on my own series as an early exercise
🗪
1:14:55miotatsu The forth implementation is going to be fun. I've been planning to translate jonesforth to RISC-V asm on my own series as an early exercise
🗪
1:16:33miotatsu It seems like a pretty ideal language to me for bootstrapping more complex things
🗪
1:16:33miotatsu It seems like a pretty ideal language to me for bootstrapping more complex things
🗪
1:16:33miotatsu It seems like a pretty ideal language to me for bootstrapping more complex things
🗪
1:17:57That's it for today
🗩
1:17:57That's it for today
🗩
1:17:57That's it for today
🗩