cinera_handmade.network/pervognsen/bitwise/bitwise/bitwise026.hmml

54 lines
3.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[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]