cinera_handmade.network/pervognsen/bitwise/bitwise/bitwise016.hmml

51 lines
4.9 KiB
Plaintext
Raw Permalink 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="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]