[video member=miotatsu stream_platform=twitch project=book title="2.8 cont." vod_platform=youtube id=XtcV_DqKnNo annotator=Miblo] [0:01][Recap and set the stage for the day][:speech] [1:41][:Memory allocation in Linux, using brk][:speech] [3:20][Chapter 2.8 continued, Allocating Space for New Data on the Heap[ref title="Computer Organization and Design RISC-V Edition" author="David Patterson & John Hennessy" publisher="Morgan Kaufmann" isbn=9780128122754 url=https://www.elsevier.com/books/computer-organization-and-design-risc-v-edition/patterson/978-0-12-812275-4]][:memory] [3:32][Static and automatic storage duration in C][:language :memory :speech] [7:03][Static storage][:blackboard :language :memory] [8:48][Static storage, as used in pcalc[ref site=GitLab page="pcalc" url=https://gitlab.com/riscy-business/pcalc]][:language :memory] [13:06][Global variables, as used in pcalc[ref site=GitLab page="pcalc" url=https://gitlab.com/riscy-business/pcalc]][:language :memory] [18:15][A general critique of global variables][:language :memory :speech] [21:19][Uninitialised vs initialised static and automatic storage duration variables in pcalc[ref site=GitLab page="pcalc" url=https://gitlab.com/riscy-business/pcalc] (uninitialised automatic storage duration variables are undefined)][:language :memory] [32:05][The "auto" keyword in C][:blackboard :language :memory] [33:47][Chapter 2.8 continued, Allocating Space for New Data on the Heap[ref title="Computer Organization and Design RISC-V Edition" author="David Patterson & John Hennessy" publisher="Morgan Kaufmann" isbn=9780128122754 url=https://www.elsevier.com/books/computer-organization-and-design-risc-v-edition/patterson/978-0-12-812275-4]][:memory] [36:41][Figure 2.13 - The RISC-V :memory allocation for program and data[ref title="Computer Organization and Design RISC-V Edition" author="David Patterson & John Hennessy" publisher="Morgan Kaufmann" isbn=9780128122754 url=https://www.elsevier.com/books/computer-organization-and-design-risc-v-edition/patterson/978-0-12-812275-4]][:blackboard :isa] [44:24][The fixed nature of the stack][:blackboard :memory] [46:41][Tip of the day: Get into sponge mode][:speech] [47:52][Figure 2.13 continued - The RISC-V :memory allocation for program and data[ref title="Computer Organization and Design RISC-V Edition" author="David Patterson & John Hennessy" publisher="Morgan Kaufmann" isbn=9780128122754 url=https://www.elsevier.com/books/computer-organization-and-design-risc-v-edition/patterson/978-0-12-812275-4]][:blackboard :isa :research] [52:09][Chapter 2.8 continued, on :memory allocation[ref title="Computer Organization and Design RISC-V Edition" author="David Patterson & John Hennessy" publisher="Morgan Kaufmann" isbn=9780128122754 url=https://www.elsevier.com/books/computer-organization-and-design-risc-v-edition/patterson/978-0-12-812275-4]] [52:57][General-purpose :memory allocation and garbage collection][:speech] [57:48][@krish2nasa][[@miotatsu Mio], are you not interested in Ada programming as it is a more robust and reliable :language? AdaCore now supports RISC-V!] [59:13][Continued thoughts on :memory allocation and freeing, including swapping to disk and :performance][:speech] [1:06:01][Legitimate :memory leaking strategies][:performance :speech] [1:10:59][Dangling pointers, prevented by zeroing out pointers][:memory :performance :speech] [1:17:30][Garbage collection, as used by pcalc's build.d script[ref site=GitLab page="pcalc" url=https://gitlab.com/riscy-business/pcalc]][:language :memory :performance :speech] [1:24:18][Chapter 2.8 continued[ref title="Computer Organization and Design RISC-V Edition" author="David Patterson & John Hennessy" publisher="Morgan Kaufmann" isbn=9780128122754 url=https://www.elsevier.com/books/computer-organization-and-design-risc-v-edition/patterson/978-0-12-812275-4]] [1:25:48][Chapter 2.8 Elaboration 2 - Making the common case, that procedures take eight or fewer parameters, fast[ref title="Computer Organization and Design RISC-V Edition" author="David Patterson & John Hennessy" publisher="Morgan Kaufmann" isbn=9780128122754 url=https://www.elsevier.com/books/computer-organization-and-design-risc-v-edition/patterson/978-0-12-812275-4]][:memory] [1:35:55][On needing a frame pointer when a procedure's :memory requirements are not known at compile-time][:speech] [1:37:26][Figure 2.14 - RISC-V register conventions[ref title="Computer Organization and Design RISC-V Edition" author="David Patterson & John Hennessy" publisher="Morgan Kaufmann" isbn=9780128122754 url=https://www.elsevier.com/books/computer-organization-and-design-risc-v-edition/patterson/978-0-12-812275-4][ref site=RISC-V page="User-Level ISA Specification v2.2" url=https://riscv.org/specifications]][:isa :memory] [1:42:38][Chapter 2.8 Elaboration 3 - Implementing recursive procedures iteratively[ref title="Computer Organization and Design RISC-V Edition" author="David Patterson & John Hennessy" publisher="Morgan Kaufmann" isbn=9780128122754 url=https://www.elsevier.com/books/computer-organization-and-design-risc-v-edition/patterson/978-0-12-812275-4]][:language] [1:45:41][Implementing a recursive accumulation procedure iteratively][:blackboard :language] [2:03:54][The "-->" operator (don't try this at home!)][:blackboard :language] [2:07:08][Completing our recursive-to-iterative accumulation procedure conversion][:blackboard :language] [2:12:17][Lower the recursive accumulation procedure to assembly[ref title="RISC-V Reader" author="David Patterson and Andrew Waterman" publisher="Strawberry Canyon" isbn=9780999249116 url=http://www.riscvbook.com/]][:asm :blackboard :language] [2:21:24][We are out of time][:speech] [2:22:02][@krish2nasa][I think first I need to watch your previous streams in the sequence for a better understanding[ref site="RISCY BUSINESS" page="Annotated Episode Guide" url=https://riscy.handmade.network/episode/coad]] [2:23:57][End this episode here][:speech] [/video]