diff options
| author | Juan Marín Noguera <juan@mnpi.eu> | 2025-05-16 22:18:44 +0200 |
|---|---|---|
| committer | Juan Marín Noguera <juan@mnpi.eu> | 2025-05-16 22:18:44 +0200 |
| commit | 4f670b750af5c11e1eac16d9cd8556455f89f46a (patch) | |
| tree | e0f8d7b33df2727d89150f799ee8628821fda80a /1.4.2.lyx | |
| parent | 16ccda6c459c0fd7ca2081e9d541124c28b0c556 (diff) | |
Changed layout for more manageable volumes
Diffstat (limited to '1.4.2.lyx')
| -rw-r--r-- | 1.4.2.lyx | 465 |
1 files changed, 0 insertions, 465 deletions
diff --git a/1.4.2.lyx b/1.4.2.lyx deleted file mode 100644 index 7577695..0000000 --- a/1.4.2.lyx +++ /dev/null @@ -1,465 +0,0 @@ -#LyX 2.4 created this file. For more info see https://www.lyx.org/ -\lyxformat 620 -\begin_document -\begin_header -\save_transient_properties true -\origin unavailable -\textclass book -\begin_preamble -\input defs -\end_preamble -\use_default_options true -\maintain_unincluded_children no -\language english -\language_package default -\inputencoding utf8 -\fontencoding auto -\font_roman "default" "default" -\font_sans "default" "default" -\font_typewriter "default" "default" -\font_math "auto" "auto" -\font_default_family default -\use_non_tex_fonts false -\font_sc false -\font_roman_osf false -\font_sans_osf false -\font_typewriter_osf false -\font_sf_scale 100 100 -\font_tt_scale 100 100 -\use_microtype false -\use_dash_ligatures true -\graphics default -\default_output_format default -\output_sync 0 -\bibtex_command default -\index_command default -\float_placement class -\float_alignment class -\paperfontsize default -\spacing single -\use_hyperref false -\papersize default -\use_geometry false -\use_package amsmath 1 -\use_package amssymb 1 -\use_package cancel 1 -\use_package esint 1 -\use_package mathdots 1 -\use_package mathtools 1 -\use_package mhchem 1 -\use_package stackrel 1 -\use_package stmaryrd 1 -\use_package undertilde 1 -\cite_engine basic -\cite_engine_type default -\biblio_style plain -\use_bibtopic false -\use_indices false -\paperorientation portrait -\suppress_date false -\justification true -\use_refstyle 1 -\use_formatted_ref 0 -\use_minted 0 -\use_lineno 0 -\index Index -\shortcut idx -\color #008000 -\end_index -\secnumdepth 3 -\tocdepth 3 -\paragraph_separation indent -\paragraph_indentation default -\is_math_indent 0 -\math_numbering_side default -\quotes_style english -\dynamic_quotes 0 -\papercolumns 1 -\papersides 1 -\paperpagestyle default -\tablestyle default -\tracking_changes false -\output_changes false -\change_bars false -\postpone_fragile_content false -\html_math_output 0 -\html_css_as_file 0 -\html_be_strict false -\docbook_table_output 0 -\docbook_mathml_prefix 1 -\end_header - -\begin_body - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -exerc1[10] -\end_layout - -\end_inset - -Explain why short, - simple examples of coroutines are hard for the author of a textbook to find. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - -Coroutines appear when there are several parts of the program coordinating among them, - where each part performs a higher level task. - While simple coroutines appear in higher level languages such as Python (in the form of generators), - in languages such as assembly where they is no builtin support for them, - they are more complex and slower than equivalent code that doesn't use coroutines, - so their utility is not evident from these simple cases. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc2[20] -\end_layout - -\end_inset - -The program in the text starts up the -\family typewriter -OUT -\family default - coroutine first. - What would happen if -\family typewriter -IN -\family default - were the first to be executed— -that is, - if line 60 where changed from ` -\family typewriter -JMP OUT1 -\family default -' to ` -\family typewriter -JMP IN1 -\family default -'? -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - -The first parsed character would be ignored, - since the -\family typewriter -OUT -\family default - coroutine doesn't expect a character to be loaded already when it begins. - Here -\family typewriter -IN -\family default - acts effectively like a generator for -\family typewriter -OUT -\family default -. -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -rexerc6[22] -\end_layout - -\end_inset - -Give coroutine linkage analogous to (1) for the case of -\emph on -three -\emph default - coroutines, - -\family typewriter -A -\family default -, - -\family typewriter -B -\family default -, - and -\family typewriter -C -\family default -, - each of which can jump to either of the other two. - (Whenever a coroutine is activated, - it begins where it last left off.) -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -answer -\end_layout - -\end_inset - -In principle, - this would require us to extend the code to -\emph on -six -\emph default - coroutine linkages, - like below: -\end_layout - -\begin_layout Standard -\begin_inset ERT -status open - -\begin_layout Plain Layout - -{ -\backslash -tt -\backslash -hfil -\end_layout - -\end_inset - - -\begin_inset Box Frameless -position "t" -hor_pos "c" -has_inner_box 1 -inner_pos "t" -use_parbox 0 -use_makebox 0 -width "25col%" -special "none" -height "1in" -height_special "totalheight" -thickness "0.4pt" -separation "3pt" -shadowsize "4pt" -framecolor "foreground" -backgroundcolor "none" -status open - -\begin_layout Plain Layout -\begin_inset listings -inline false -status open - -\begin_layout Plain Layout -BTOA STJ BX -\end_layout - -\begin_layout Plain Layout - JMP AX -\end_layout - -\begin_layout Plain Layout -CTOA STJ CX -\end_layout - -\begin_layout Plain Layout -AX JMP A1 -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -hfil -\end_layout - -\end_inset - - -\begin_inset Box Frameless -position "t" -hor_pos "c" -has_inner_box 1 -inner_pos "t" -use_parbox 0 -use_makebox 0 -width "25col%" -special "none" -height "1in" -height_special "totalheight" -thickness "0.4pt" -separation "3pt" -shadowsize "4pt" -framecolor "foreground" -backgroundcolor "none" -status open - -\begin_layout Plain Layout -\begin_inset listings -inline false -status open - -\begin_layout Plain Layout -ATOB STJ AX -\end_layout - -\begin_layout Plain Layout - JMP BX -\end_layout - -\begin_layout Plain Layout -CTOB STJ CX -\end_layout - -\begin_layout Plain Layout -BX JMP B1 -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -hfil -\end_layout - -\end_inset - - -\begin_inset Box Frameless -position "t" -hor_pos "c" -has_inner_box 1 -inner_pos "t" -use_parbox 0 -use_makebox 0 -width "25col%" -special "none" -height "1in" -height_special "totalheight" -thickness "0.4pt" -separation "3pt" -shadowsize "4pt" -framecolor "foreground" -backgroundcolor "none" -status open - -\begin_layout Plain Layout -\begin_inset listings -inline false -status open - -\begin_layout Plain Layout -ATOC STJ AX -\end_layout - -\begin_layout Plain Layout - JMP CX -\end_layout - -\begin_layout Plain Layout -BTOC STJ BX -\end_layout - -\begin_layout Plain Layout - JMP C1 -\end_layout - -\end_inset - - -\end_layout - -\end_inset - - -\begin_inset ERT -status open - -\begin_layout Plain Layout - - -\backslash -hfil} -\end_layout - -\end_inset - - -\end_layout - -\begin_layout Standard -We can then elide the code for jumps that never happen. - When the number of coroutines is large, - typically each one only communicates with the next or they communicate with a central, - coordinating coroutine that decides which to call next based on some protocol (maybe coroutines store the index of the next coroutine to run in some register, - or coroutines are polled in order based on which has input data available, - for example.) -\end_layout - -\end_body -\end_document |
