From ec3959a9f343a8d319ae2398aecd953f56105c57 Mon Sep 17 00:00:00 2001 From: Matt Mascarenhas Date: Mon, 16 Apr 2018 20:40:51 +0100 Subject: [PATCH] Annotate bitwise016 --- pervognsen/bitwise/bitwise/bitwise016.hmml | 50 ++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 pervognsen/bitwise/bitwise/bitwise016.hmml diff --git a/pervognsen/bitwise/bitwise/bitwise016.hmml b/pervognsen/bitwise/bitwise/bitwise016.hmml new file mode 100644 index 0000000..04d590d --- /dev/null +++ b/pervognsen/bitwise/bitwise/bitwise016.hmml @@ -0,0 +1,50 @@ +[video member=pervognsen stream_platform=twitch project=bitwise title="Weekend Edition" medium=research vod_platform=youtube id=jNbar0lj93g annotator=Miblo] +[0:08][Recap and set the stage for an especially random day][:speech] +[2:25][Review the work making the dot operator for field access auto-dereference pointers to aggregates, and implementing support for float const declarations][:"code generation" :parsing] +[6:10][Showcase the vector library test2.ion][:"code generation" :parsing] +[8:23][Review the work implementing support for bool][:"code generation" :parsing] +[9:58][Review the work implementing conservative control analysis in resolve_stmt() and resolve_stmt_block()][:parsing] +[14:34][Review the work implementing detection of duplicate global and local symbol errors][:"error handling"] +[15:56][Review the work implementing function call notation int(3.14) for explicit type conversion][:parsing] +[17:00][Review the work on explicitly sized types, and adding support for C-style null pointers][:"code generation"] +[19:12][Review the work allowing optional names in function typespecs][:parsing] +[20:18][Review the work implementing the const qualifier, with an explanation of the notion of non-modifiability in C][:"code generation" :language :parsing] +[31:53][Describe the conceptual breakthrough regarding the use of expressions in an rvalue context, with explanations of operand_decay(), convert_operand(), is_convertible() and is_null_ptr()][:"code generation" :parsing] +[36:53][Fix is_null_ptr() to use is_integer_type() rather than is_arithmetic_type() when determining whether to call cast_operand()][:"code generation" :parsing :programming] +[37:24][Continue to describe is_null_ptr() and is_convertible()][:"code generation" :parsing] +[38:32][Review the new distinction between casts and conversions][:"code generation" :parsing] +[41:29][Review the work implementing support for different literal types and literal suffixes][:"code generation" :parsing] +[47:20][Explain C's differing rankings of decimal and octal / hexadecimal integer constants[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]][:language] +[56:12][Review the new preservation of token modifiers for literals in generated C code][:"code generation" :language] +[1:01:24][Review the work implementing support for "x: int" and "x: int = 0" local initialiser statements][:"code generation" :parsing] +[1:05:20][Review the new inference of incomplete array size for initialiser statements, and :"error handling" of size 0 function parameters and assignment to arrays][:"code generation"] +[1:09:05][Make is_convertible() to treat arrays as pointers for the purposes of pointer-decay][:"code generation" :parsing :programming] +[1:12:57][:Run it to see what test_arrays() produces][:"code generation" :parsing] +[1:13:49][Revert is_convertible() and instead enable resolve_expr_call() to pointer-decay arrays][:"code generation" :parsing :programming] +[1:15:45][Reflect on the near completion of Ion, and determine to handle volatile][:speech] +[1:16:23][Q&A][:speech] +[1:16:51][@tbodt_][Since they're compile-time constants couldn't you compute the value of the constant in the compiler and just inline that?][:"code generation" :parsing] +[1:18:52][@pmttavara][For goto, don't you just have to verify that there is at least one return statement after the very final goto label in the function?][:"code generation" :parsing] +[1:19:20][@godling72][@pervognsen Are you going to have "restrict"?[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]][:language] +[1:20:37][@BitSlime][Doesn't restrict just make sure two pointer parameters aren't the same?[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]][:language] +[1:22:37][@olafbtwitch][Inline assembly?][:asm :language] +[1:23:29][@BitSlime][You need inline assembly since C has no native cpuid function][:asm :language] +[1:24:15][Determine to fully handle enums[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]][:"code generation" :language :parsing] +[1:29:57][Enable resolve_decl_type() and resolve_sym() to handle the SYM_ENUM_CONST case, introducing type_enum() and resolve_decl_enum() and an EnumField struct][:"code generation" :language :parsing :programming] +[1:48:47][Restate the problem with handling enums][:"code generation" :language :parsing :speech] +[1:49:49][Temporarily introduce sym_push_const() symbol stack][:"code generation" :language :parsing :programming] +[1:51:25][Revert the new enum handling code][:"code generation" :language :parsing :programming] +[1:52:34][Get lunch][:speech] +[/video]