diff --git a/pervognsen/bitwise/bitwise/bitwise026.hmml b/pervognsen/bitwise/bitwise/bitwise026.hmml new file mode 100644 index 0000000..7c95298 --- /dev/null +++ b/pervognsen/bitwise/bitwise/bitwise026.hmml @@ -0,0 +1,53 @@ +[video member=pervognsen stream_platform=twitch project=bitwise title="RISC-V Static Assembler" vod_platform=youtube id=zd91F4_UdyE annotator=Miblo] +[0:00][Recap and set the stage for the day][:speech] +[0:54][Recommend the Annotated Episode Guide, and plug @Miblo's pledge page[ref + site="The Life and Times of Miblo del Carpio" + page="Cinera, and Annotation Writing" + url=https://miblodelcarpio.co.uk/cinera/#pledge] and twitter[ref + site=Twitter + page="Miblo del Carpio" + url=https://twitter.com/miblo_], and the forums[ref + site="Bitwise Forums" + page="Ion: Transitive imports of symbols" + url=https://bitwise.handmade.network/forums/t/3126-ion__transitive_imports_of_symbols]][:speech] +[3:54][Roadmap for the next few weeks, working on a static RISC-V assembler and making the emulator more standalone][:asm :emulation :isa :speech] +[10:15][Plan to move on to :hardware design once we have the assembler and emulator][:speech] +[13:25][Review the work on the Reverse Polish Notation generator][:"code generation" :research] +[16:03][Demo the RPN calculator][:run] +[16:56][Explain the implementation of gen_rpn() and its :asm emittance][:"code generation" :research] +[26:28][Q&A][:speech] +[27:01][@voxygon][Is the ASCII assumed?] +[27:59][Setup to work on the static assembler, creating assembler.ion][:admin :asm] +[30:12][Static assembler][:asm :parsing :speech] +[32:10][Embark on the lexer, introducing the Lexer struct and next_token()][:parsing] +[39:52][Introduce scan_int() and adapt the whole lot of lex.c to Ion][:language :parsing] +[44:57][Organise the projects, pulling out test functions to test.ion][:admin] +[47:38][Introduce init_lexer() and lexer_test()][:parsing] +[49:22][Step through our lexer to see that it works][:parsing :run] +[50:02][Enable next_token() to handle EOF, and lexer_test() to print out the token kind][:parsing] +[52:19][:Run it to see that it handles types correctly][:parsing] +[53:10][Implement lexer_error()][:"error handling"] +[56:17][Test out our :"error handling"][:parsing :run] +[56:30][Make init_lexer() take a filename][:parsing] +[57:11][:Run it to see our filename][:parsing] +[57:35][Adapt scan_char() and related functions from lex.c to Ion][:language :parsing] +[1:04:31][Add a string test in lexer_test()][:parsing] +[1:05:29][Hit our assertion in the compiler's scan_str() due to a \\-escaped closing quote mark][:run] +[1:06:55][Remove that assertion from scan_str() to allow the compiler to throw an error instead][:parsing] +[1:08:07][:Run it to see that our lexer_test() works][:parsing] +[1:09:04][Implement stretchy buffers in Ion][:memory] +[1:19:30][Consult the C spec[ref + author=ANSI + title="ISO/IEC 9899: Information technology – Programming languages – C" + url=http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf] to see if Ion could support the ternary operator][:language :research] +[1:20:28][Finish implementing Ion's stretchy buffers, noting differences from the C implementation][:language :memory] +[1:26:29][Enable scan_str() to use strbuf_push()][:memory] +[1:28:04][Make resolve_expr_binary_op() disallow pointer arithmetic on void* / 0-size elements][:parsing] +[1:30:36][Test if the streams parse correctly][:parsing :run] +[1:31:08][Test buffer regrowth][:memory :run] +[1:32:06][Reflect on our stretchy buffers in Ion][:memory :research] +[1:35:06][Adapt strbuf_printf() from C to Ion, and implement buf_fit() and strbuf_end()][:language :memory] +[1:40:51][Add a strbuf_printf() test to lexer_test()][:memory] +[1:41:50][:Run it to see that it looks reasonable][:memory] +[1:41:58][Stop the main stream here, with a few final thoughts on Ion's stretchy buffers and the lexer][:memory :parsing :speech] +[/video]