Stacks, C declarations, equinumerosity.

main
Joshua Potter 2024-11-22 18:06:17 -07:00
parent ee6d3d8493
commit 19959c4866
21 changed files with 765 additions and 31 deletions

View File

@ -219,7 +219,9 @@
"saved-registers.png", "saved-registers.png",
"local-variables.png", "local-variables.png",
"arg-build-area.png", "arg-build-area.png",
"stack-frame.png" "stack-frame.png",
"buffer-overflow.png",
"infinite-cartesian-product.png"
], ],
"File Hashes": { "File Hashes": {
"algorithms/index.md": "3ac071354e55242919cc574eb43de6f8", "algorithms/index.md": "3ac071354e55242919cc574eb43de6f8",
@ -331,10 +333,10 @@
"_journal/2024-02/2024-02-21.md": "f423137ae550eb958378750d1f5e98c7", "_journal/2024-02/2024-02-21.md": "f423137ae550eb958378750d1f5e98c7",
"_journal/2024-02-23.md": "219ce9ad15a8733edd476c97628b71fd", "_journal/2024-02-23.md": "219ce9ad15a8733edd476c97628b71fd",
"_journal/2024-02/2024-02-22.md": "312e55d57868026f6e80f7989a889c2b", "_journal/2024-02/2024-02-22.md": "312e55d57868026f6e80f7989a889c2b",
"c17/strings.md": "e909daa71ad93bcb38edbe30bc0516ac", "c17/strings.md": "c876fc99f9980b4cb2bd9abb6b821322",
"c17/index.md": "611dd21439d56575172ef004c7635382", "c17/index.md": "611dd21439d56575172ef004c7635382",
"c17/escape-sequences.md": "a8b99070336878b4e8c11e9e4525a500", "c17/escape-sequences.md": "a8b99070336878b4e8c11e9e4525a500",
"c17/declarations.md": "c520b5335cbcad3cf54590bf100fafbc", "c17/declarations.md": "c853b9584365ba69ac5845082061a8dd",
"algorithms/sorting/merge-sort.md": "6506483f7df6507cee0407bd205dbedd", "algorithms/sorting/merge-sort.md": "6506483f7df6507cee0407bd205dbedd",
"_journal/2024-02-24.md": "9bb319d5014caf962a9ce3141076cff4", "_journal/2024-02-24.md": "9bb319d5014caf962a9ce3141076cff4",
"_journal/2024-02/2024-02-23.md": "0aad297148e8cc4058b48b7e45787ca7", "_journal/2024-02/2024-02-23.md": "0aad297148e8cc4058b48b7e45787ca7",
@ -458,7 +460,7 @@
"_journal/2024-04/2024-04-14.md": "037c77d0e11f2d58ffee61ea0a1708ab", "_journal/2024-04/2024-04-14.md": "037c77d0e11f2d58ffee61ea0a1708ab",
"_journal/2024-04-16.md": "0bf6e2f2a3afab73d528cee88c4c1a92", "_journal/2024-04-16.md": "0bf6e2f2a3afab73d528cee88c4c1a92",
"_journal/2024-04/2024-04-15.md": "256253b0633d878ca58060162beb7587", "_journal/2024-04/2024-04-15.md": "256253b0633d878ca58060162beb7587",
"algebra/polynomials.md": "da56d2d6934acfa2c6b7b2c73c87b2c7", "algebra/polynomials.md": "0ee5defa02562263fbeb08ca3ea513fb",
"algebra/sequences/delta-constant.md": "b744b0d8decdfff4ad40b07af848bf74", "algebra/sequences/delta-constant.md": "b744b0d8decdfff4ad40b07af848bf74",
"_journal/2024-04-19.md": "a293087860a7f378507a96df0b09dd2b", "_journal/2024-04-19.md": "a293087860a7f378507a96df0b09dd2b",
"_journal/2024-04/2024-04-18.md": "f6e5bee68dbef90a21ca92a846930a88", "_journal/2024-04/2024-04-18.md": "f6e5bee68dbef90a21ca92a846930a88",
@ -560,7 +562,7 @@
"_journal/2024-05/2024-05-25.md": "3e8a0061fa58a6e5c48d12800d1ab869", "_journal/2024-05/2024-05-25.md": "3e8a0061fa58a6e5c48d12800d1ab869",
"_journal/2024-05-27.md": "b36636d10eab34380f17f288868df3ae", "_journal/2024-05-27.md": "b36636d10eab34380f17f288868df3ae",
"_journal/2024-05/2024-05-26.md": "abe84b5beae74baa25501c818e64fc95", "_journal/2024-05/2024-05-26.md": "abe84b5beae74baa25501c818e64fc95",
"algebra/set.md": "a89ada021de83240724adb70490e3472", "algebra/set.md": "e31026e860182bf000af60e4b5f39413",
"algebra/boolean.md": "c9bd5abb601be6d2bedd24d5f54848b0", "algebra/boolean.md": "c9bd5abb601be6d2bedd24d5f54848b0",
"git/merge-conflicts.md": "761ad6137ec51d3877f7d5b3615ca5cb", "git/merge-conflicts.md": "761ad6137ec51d3877f7d5b3615ca5cb",
"_journal/2024-05-28.md": "0f6aeb5ec126560acdc2d8c5c6570337", "_journal/2024-05-28.md": "0f6aeb5ec126560acdc2d8c5c6570337",
@ -613,10 +615,10 @@
"_journal/2024-06/2024-06-13.md": "e2722a00585d94794a089e8035e05728", "_journal/2024-06/2024-06-13.md": "e2722a00585d94794a089e8035e05728",
"set/functions.md": "f10998cb17657526363f57c077f7a6f1", "set/functions.md": "f10998cb17657526363f57c077f7a6f1",
"_journal/2024-06-15.md": "92cb8dc5c98e10832fb70c0e3ab3cec4", "_journal/2024-06-15.md": "92cb8dc5c98e10832fb70c0e3ab3cec4",
"_journal/2024-06/2024-06-14.md": "5d12bc272238ac985a1d35d3d63ea307", "_journal/2024-06/2024-06-14.md": "8bbe0e1ca371756b91eec66af73911ce",
"lambda-calculus/beta-reduction.md": "0935987f2bac0e6298735f2b26fd5885", "lambda-calculus/beta-reduction.md": "0935987f2bac0e6298735f2b26fd5885",
"_journal/2024-06-16.md": "ded6ab660ecc7c3dce3afd2e88e5a725", "_journal/2024-06-16.md": "ded6ab660ecc7c3dce3afd2e88e5a725",
"_journal/2024-06/2024-06-15.md": "c3a55549da9dfc2770bfcf403bf5b30b", "_journal/2024-06/2024-06-15.md": "2856849832ac7cb31f4f46543f5c52b4",
"_journal/2024-06-17.md": "63df6757bb3384e45093bf2b9456ffac", "_journal/2024-06-17.md": "63df6757bb3384e45093bf2b9456ffac",
"_journal/2024-06/2024-06-16.md": "ded6ab660ecc7c3dce3afd2e88e5a725", "_journal/2024-06/2024-06-16.md": "ded6ab660ecc7c3dce3afd2e88e5a725",
"_journal/2024-06-18.md": "927e8a3329deadb685ac58241066fdae", "_journal/2024-06-18.md": "927e8a3329deadb685ac58241066fdae",
@ -633,8 +635,8 @@
"_journal/2024-06-22.md": "8f566883a70458a20d9c750065ce4025", "_journal/2024-06-22.md": "8f566883a70458a20d9c750065ce4025",
"programming/ars.md": "a62db41d53a0ec5973742a09e0b48f0a", "programming/ars.md": "a62db41d53a0ec5973742a09e0b48f0a",
"_journal/2024-06-23.md": "72e157bbf19d2d35843873ff9e900927", "_journal/2024-06-23.md": "72e157bbf19d2d35843873ff9e900927",
"_journal/2024-06/2024-06-22.md": "6b55e35f56e7f7c296c8df6812ba62d3", "_journal/2024-06/2024-06-22.md": "ac2cb452949188d3d31e0bb1e776c2cb",
"_journal/2024-06/2024-06-21.md": "12e37e2c57abab09c781b32793fbbe1a", "_journal/2024-06/2024-06-21.md": "4c6b3ce619a63c758e381b51b43d0c08",
"startups/financing.md": "1978def9644211c989564faa3e4a56ea", "startups/financing.md": "1978def9644211c989564faa3e4a56ea",
"_journal/2024-06-24.md": "7fc0f4cd231ef7cd6aa2b556d1244cf4", "_journal/2024-06-24.md": "7fc0f4cd231ef7cd6aa2b556d1244cf4",
"_journal/2024-06/2024-06-23.md": "9e23344bcc6c9ecc038c349022eaffd7", "_journal/2024-06/2024-06-23.md": "9e23344bcc6c9ecc038c349022eaffd7",
@ -687,7 +689,7 @@
"_journal/2024-07-17.md": "e0371a91e99f131e7258cc82c2a04cc8", "_journal/2024-07-17.md": "e0371a91e99f131e7258cc82c2a04cc8",
"_journal/2024-07/2024-07-16.md": "149222eab7a7f58993b8e4dc8a3fb884", "_journal/2024-07/2024-07-16.md": "149222eab7a7f58993b8e4dc8a3fb884",
"_journal/2024-07-18.md": "a9d26ce938228973f07178a15128a681", "_journal/2024-07-18.md": "a9d26ce938228973f07178a15128a681",
"_journal/2024-07/2024-07-17.md": "0c816cd6110bdd14d3eac4e5b82510cf", "_journal/2024-07/2024-07-17.md": "61fed0ae4d036c8ac4477cdbd039d19f",
"ontology/dialetheism.md": "56dd05b38519f90c5cab93637978b3b3", "ontology/dialetheism.md": "56dd05b38519f90c5cab93637978b3b3",
"abstract-rewriting-systems/index.md": "b7486b7635cb0d8bafc2a2f095af90fb", "abstract-rewriting-systems/index.md": "b7486b7635cb0d8bafc2a2f095af90fb",
"abstract-rewriting-systems/normal-form.md": "2fff9a1d85bca0a2941a54b0084a0309", "abstract-rewriting-systems/normal-form.md": "2fff9a1d85bca0a2941a54b0084a0309",
@ -798,7 +800,7 @@
"c17/basic-types.md": "7c6653bf6dc24c2f2aa72fc95c4f7875", "c17/basic-types.md": "7c6653bf6dc24c2f2aa72fc95c4f7875",
"c17/types/simple.md": "44d56a2998f3bba578f14672c8b0ee3c", "c17/types/simple.md": "44d56a2998f3bba578f14672c8b0ee3c",
"c17/types/enumerated.md": "e1f70a30677c776b7b44ac3e0ff4e76d", "c17/types/enumerated.md": "e1f70a30677c776b7b44ac3e0ff4e76d",
"c17/types/derived.md": "26bcaee99aba7720fd76d92e10770933", "c17/types/derived.md": "dcac68790016190ce5c4196bd9c1d53d",
"c17/types/basic.md": "5064e21e683c0218890058882e06b6f3", "c17/types/basic.md": "5064e21e683c0218890058882e06b6f3",
"c17/types/index.md": "14b651bcfc8b2d62ffd200a74a9a2a6b", "c17/types/index.md": "14b651bcfc8b2d62ffd200a74a9a2a6b",
"_journal/2024-08-25.md": "e73a8edbd027d0f1a39289540eb512f2", "_journal/2024-08-25.md": "e73a8edbd027d0f1a39289540eb512f2",
@ -879,7 +881,7 @@
"_journal/2024-10/2024-10-06.md": "65a8e538144f59ee9e7296110cc9aa14", "_journal/2024-10/2024-10-06.md": "65a8e538144f59ee9e7296110cc9aa14",
"_journal/2024-10-09.md": "66acb6c8abbf0c860966223f3299c2bc", "_journal/2024-10-09.md": "66acb6c8abbf0c860966223f3299c2bc",
"_journal/2024-10/2024-10-08.md": "2f737d8198b12bf635808964c4887ae1", "_journal/2024-10/2024-10-08.md": "2f737d8198b12bf635808964c4887ae1",
"x86-64/procedures.md": "4f8bb79e11b710eaccaf7ecb847bd69f", "x86-64/procedures.md": "eba67bb16589d24f235fa0fb0067f552",
"_journal/2024-10-10.md": "29e4be2c164c63f8b7aab56bddee3dd6", "_journal/2024-10-10.md": "29e4be2c164c63f8b7aab56bddee3dd6",
"_journal/2024-10/2024-10-09.md": "458811cdab772a7b3dbc1dd8ae5c51ee", "_journal/2024-10/2024-10-09.md": "458811cdab772a7b3dbc1dd8ae5c51ee",
"_journal/2024-10-15.md": "6e696a8d16ba257ed89e8564b771d290", "_journal/2024-10-15.md": "6e696a8d16ba257ed89e8564b771d290",
@ -906,7 +908,7 @@
"_journal/2024-10/2024-10-27.md": "cba851f3ca4482b776b339b792c4c901", "_journal/2024-10/2024-10-27.md": "cba851f3ca4482b776b339b792c4c901",
"_journal/2024-10/2024-10-26.md": "e69e361f941c181828c87368b18d1a1c", "_journal/2024-10/2024-10-26.md": "e69e361f941c181828c87368b18d1a1c",
"_journal/2024-10/2024-10-25.md": "0597575213a2bb0e15052efa9404dd1b", "_journal/2024-10/2024-10-25.md": "0597575213a2bb0e15052efa9404dd1b",
"_journal/2024-10/2024-10-24.md": "4493c339209fdd910866d126b8ebe3c6", "_journal/2024-10/2024-10-24.md": "7a6b0b950b0492b4bf178a52a1a86de5",
"_journal/2024-10-29.md": "19444fb3b9bef82b200c77a6acc33637", "_journal/2024-10-29.md": "19444fb3b9bef82b200c77a6acc33637",
"_journal/2024-10/2024-10-28.md": "95bcec30eda031bf6410ff51a61b0ee3", "_journal/2024-10/2024-10-28.md": "95bcec30eda031bf6410ff51a61b0ee3",
"c17/typedefs.md": "1fcb044f12c4f16de1ef8cb4c293dd10", "c17/typedefs.md": "1fcb044f12c4f16de1ef8cb4c293dd10",
@ -941,7 +943,14 @@
"_journal/2024-11/2024-11-12.md": "24c858a93c0a5063820bd96207e6f8ab", "_journal/2024-11/2024-11-12.md": "24c858a93c0a5063820bd96207e6f8ab",
"_journal/2024-11/2024-11-11.md": "d3ad8ddc5ecdb2cc08773fdef2ce6869", "_journal/2024-11/2024-11-11.md": "d3ad8ddc5ecdb2cc08773fdef2ce6869",
"_journal/2024-11/2024-11-10.md": "38ce405754e3823c8239df44546f3b35", "_journal/2024-11/2024-11-10.md": "38ce405754e3823c8239df44546f3b35",
"x86-64/instructions/procedures.md": "fd83b80e35454d4bca12c4cf8127cf91" "x86-64/instructions/procedures.md": "f4e17501f64007883cd656c9a834d926",
"_journal/2024-11-19.md": "1b74d7911d7ba01b5c3adffaa8c2a0ba",
"_journal/2024-11/2024-11-18.md": "db0e4cdaa7361294c7e8a1f36897e6a6",
"_journal/2024-11-22.md": "51117030e2364dbce3a8d507dead86ae",
"_journal/2024-11/2024-11-21.md": "951b6034d60a40dbd8201c50abf0dbb9",
"_journal/2024-11/2024-11-20.md": "951b6034d60a40dbd8201c50abf0dbb9",
"_journal/2024-11/2024-11-19.md": "d879f57154cb27cb168eb1f1f430e312",
"set/cardinality.md": "499e758bc0929af06736fa2974aade60"
}, },
"fields_dict": { "fields_dict": {
"Basic": [ "Basic": [

View File

@ -9,4 +9,4 @@ title: "2024-06-14"
- [ ] Korean (Read 1 Story) - [ ] Korean (Read 1 Story)
* Finished most notes on [[alpha-conversion|α-conversion]]. * Finished most notes on [[alpha-conversion|α-conversion]].
* Starting notes on [[functions]]. * Starting notes on [[set/functions]].

View File

@ -8,5 +8,5 @@ title: "2024-06-15"
- [ ] Sheet Music (10 min.) - [ ] Sheet Music (10 min.)
- [ ] Korean (Read 1 Story) - [ ] Korean (Read 1 Story)
* [[functions|Notes]] on injections, surjections, and bijections. * [[set/functions|Notes]] on injections, surjections, and bijections.
* Start defining [[beta-reduction|β-reduction]]. * Start defining [[beta-reduction|β-reduction]].

View File

@ -8,5 +8,5 @@ title: "2024-06-21"
- [ ] Sheet Music (10 min.) - [ ] Sheet Music (10 min.)
- [ ] Korean (Read 1 Story) - [ ] Korean (Read 1 Story)
* Notes on [[functions#Inverses|inverses]] and [[functions#Compositions|compositions]] of functions. * Notes on [[set/functions#Inverses|inverses]] and [[set/functions#Compositions|compositions]] of functions.
* Finished Chapter 8 of "The Science of Programming" on sequential composition. * Finished Chapter 8 of "The Science of Programming" on sequential composition.

View File

@ -10,5 +10,5 @@ title: "2024-06-22"
* Notes on [[beta-reduction#Normal Form|β-normal forms]]. * Notes on [[beta-reduction#Normal Form|β-normal forms]].
* Very basic notes on [[abstract-rewriting-systems/index|abstract rewriting systems]]. * Very basic notes on [[abstract-rewriting-systems/index|abstract rewriting systems]].
* Additional set theory definitions ([[functions#Restrictions|restrictions]] and [[functions#Images|images]]). * Additional set theory definitions ([[set/functions#Restrictions|restrictions]] and [[set/functions#Images|images]]).
* Read chapters 2 ("Methodology") and 3 ("Properties") of "An Introduction to Ontology". * Read chapters 2 ("Methodology") and 3 ("Properties") of "An Introduction to Ontology".

View File

@ -8,4 +8,4 @@ title: "2024-07-17"
- [ ] Sheet Music (10 min.) - [ ] Sheet Music (10 min.)
- [ ] Korean (Read 1 Story) - [ ] Korean (Read 1 Story)
* Notes on [[relations#Quotient Sets|quotient sets]], function [[functions#Kernels|kernels]], and fibers. * Notes on [[relations#Quotient Sets|quotient sets]], function [[set/functions#Kernels|kernels]], and fibers.

View File

@ -9,5 +9,5 @@ title: "2024-10-24"
- [ ] Korean (Read 1 Story) - [ ] Korean (Read 1 Story)
* Finished "Recursion on $\omega$" and "Arithmetic" sections of Enderton's "Elements of Set Theory". * Finished "Recursion on $\omega$" and "Arithmetic" sections of Enderton's "Elements of Set Theory".
* Notes on recursively defined [[natural-numbers#Addition|addition]], [[natural-numbers#Multiplication|multiplication]] and [[natural-numbers#Exponentiation|exponentiation]] [[functions|operations]]. * Notes on recursively defined [[natural-numbers#Addition|addition]], [[natural-numbers#Multiplication|multiplication]] and [[natural-numbers#Exponentiation|exponentiation]] [[set/functions|operations]].
* Notes on local stack variables and arguments passed on the stack. * Notes on local stack variables and arguments passed on the stack.

View File

@ -0,0 +1,13 @@
---
title: "2024-11-22"
---
- [x] Anki Flashcards
- [x] KoL
- [x] OGS
- [ ] Sheet Music (10 min.)
- [ ] Korean (Read 1 Story)
* Read through CS:APP's section "The Y86-64 Instruction Set Architecture".
* Added notes on the special cases of C's [[c17/declarations#main|main()]] function.
* Notes on [[cardinality#Overview|equinumerosity]].

View File

@ -2,9 +2,9 @@
title: "2024-11-18" title: "2024-11-18"
--- ---
- [ ] Anki Flashcards - [x] Anki Flashcards
- [x] KoL - [x] KoL
- [ ] OGS - [x] OGS
- [ ] Sheet Music (10 min.) - [ ] Sheet Music (10 min.)
- [ ] Korean (Read 1 Story) - [ ] Korean (Read 1 Story)

View File

@ -0,0 +1,11 @@
---
title: "2024-11-19"
---
- [x] Anki Flashcards
- [x] KoL
- [x] OGS
- [ ] Sheet Music (10 min.)
- [ ] Korean (Read 1 Story)
* [[c17/declarations#Prototypes|Notes]] on prototypes, identifier type lists, and parameter type lists.

View File

@ -0,0 +1,9 @@
---
title: "2024-11-21"
---
- [x] Anki Flashcards
- [x] KoL
- [x] OGS
- [ ] Sheet Music (10 min.)
- [ ] Korean (Read 1 Story)

View File

@ -0,0 +1,9 @@
---
title: "2024-11-21"
---
- [x] Anki Flashcards
- [x] KoL
- [x] OGS
- [ ] Sheet Music (10 min.)
- [ ] Korean (Read 1 Story)

View File

@ -87,7 +87,7 @@ END%%
%%ANKI %%ANKI
Basic Basic
What is a binomial? What is a binomial?
Back: A polynomial containing two terms. Back: A polynomial containing two non-like terms.
Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf). Reference: Oscar Levin, *Discrete Mathematics: An Open Introduction*, 3rd ed., n.d., [https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf](https://discrete.openmathbooks.org/pdfs/dmoi3-tablet.pdf).
<!--ID: 1708368078759--> <!--ID: 1708368078759-->
END%% END%%

View File

@ -905,7 +905,7 @@ END%%
## Index Sets ## Index Sets
Let $I$ be a set, called the **index set**. Let $F$ be a [[functions|function]] whose domain includes $I$. Then we define $$\bigcup_{i \in I} F(i) = \bigcup\,\{F(i) \mid i \in I\}$$ Let $I$ be a set, called the **index set**. Let $F$ be a [[set/functions|function]] whose domain includes $I$. Then we define $$\bigcup_{i \in I} F(i) = \bigcup\,\{F(i) \mid i \in I\}$$
and, if $I \neq \varnothing$, $$\bigcap_{i \in I} F(i) = \bigcap\, \{F(i) \mid i \in I\}$$ and, if $I \neq \varnothing$, $$\bigcap_{i \in I} F(i) = \bigcap\, \{F(i) \mid i \in I\}$$
%%ANKI %%ANKI

View File

@ -275,6 +275,497 @@ Reference: Van der Linden, Peter. _Expert C Programming: Deep C Secrets_. Progra
<!--ID: 1722786892125--> <!--ID: 1722786892125-->
END%% END%%
## Prototypes
A function declaration/definition has two ways of using declarators: **parameter type lists** and **identifier type lists**. To make the distinction clear, consider the following two ways of defining an `add` function:
```c
int f(int x, int y) { return x + y; } // Paramter type list
int f(x, y) int x; int y; { return x + y } // Identifier type list
```
A function **prototype** is a kind of function declaration that specifies the function signature. There are three important points to make note of:
* Empty identifier lists are interpreted as "the compiler has not been told what this function's arguments are."
* The standard prohibits declaring functions with a non-empty identifier list.
* Empty parameter lists are not allowed.
Therefore:
```c
// Uses an empty identifer list. This declares a function `foo`
// that takes an unknown specification of arguments.
void foo();
// Uses a non-empty identifier list. Compiler error.
void foo(x, y);
// Uses a non-empty identifier list. Compiler error.
void foo(x, y) int x; int y;
// Uses a non-empty identifier list. Definitions allow this.
void foo(x, y) int x; int y; { }
// Uses a non-empty parameter list. This prototypes a function
// `foo` that takes no arguments.
void foo(void);
// Uses a non-empty parameter list. This prototypes and defines
// a function `foo` that takes no arguments.
void foo(void) {}
```
Together these points imply a function prototype *must* use a parameter type list.
%%ANKI
Basic
Which of prototypes or declarations are more general?
Back: Declarations.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751462-->
END%%
%%ANKI
Basic
What two ways are parameters declared in function declarations and definitions?
Back: Identifier type lists and parameter type lists.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751467-->
END%%
%%ANKI
Basic
Which of identifier type lists and/or parameter type lists considered obsolete?
Back: Identifier type lists.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751470-->
END%%
%%ANKI
Basic
Define an addition function using identifier type lists.
Back:
```c
int add(x, y) int x; int y; { return x + y; }
```
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751473-->
END%%
%%ANKI
Basic
Define an addition function using parameter type lists.
Back:
```c
int add(int x, int y) { return x + y; }
```
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751476-->
END%%
%%ANKI
Basic
Is the following a prototype or a declaration?
```c
void foo();
```
Back: A declaration.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751479-->
END%%
%%ANKI
Basic
What compilation error does the following raise?
```c
void foo();
```
Back: N/A.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751482-->
END%%
%%ANKI
Basic
What compilation error does the following raise?
```c
void foo(x, y);
```
Back: A function declaration cannot have a non-empty identifier list.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751486-->
END%%
%%ANKI
Basic
What compilation error does the following raise?
```c
void foo(x, y) int x; int y;
```
Back: A function declaration cannot have a non-empty identifier list.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751490-->
END%%
%%ANKI
Basic
What compilation error does the following raise?
```c
void foo(x, y) int x; int y; {}
```
Back: N/A.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751495-->
END%%
%%ANKI
Basic
What function prototype is declared in the following?
```c
void foo(x, y) int x; int y; {}
```
Back: N/A. No prototype has been declared.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751499-->
END%%
%%ANKI
Basic
What compilation error does the following raise?
```c
void foo();
int main(void) { foo(1); }
```
Back: N/A.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751504-->
END%%
%%ANKI
Basic
Is the following a prototype or a declaration?
```c
void f(void);
```
Back: A prototype.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751509-->
END%%
%%ANKI
Basic
What compilation error does the following raise?
```c
void foo(void);
```
Back: N/A.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751513-->
END%%
%%ANKI
Basic
What compilation error does the following raise?
```c
void foo(void);
int main(void) { foo(1); }
```
Back: Too many arguments to function call `foo`.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751518-->
END%%
%%ANKI
Basic
What function prototype is declared in the following?
```c
void foo(int x, int y);
```
Back: `void foo(int, int)`
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751522-->
END%%
%%ANKI
Basic
What function prototype is declared in the following?
```c
void foo(int x, int y) {}
```
Back: `void foo(int, int)`
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751527-->
END%%
%%ANKI
Basic
How many arguments does the following declaration specify?
```c
void foo();
```
Back: Some number unknown to the compiler.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751531-->
END%%
%%ANKI
Basic
How many arguments does the following declaration specify?
```c
void foo(void);
```
Back: Zero.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751535-->
END%%
%%ANKI
Basic
Why might the following snippet raise a compilation error?
```c
int foo();
int foo(int a);
```
Back: N/A. It likely wouldn't.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751539-->
END%%
%%ANKI
Basic
*Why* might the following snippet raise a compilation error?
```c
int foo();
int foo(float a);
```
Back: Conflicting types. The first `foo` declares any `float` passed to it default promotes to a `double`.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751543-->
END%%
%%ANKI
Basic
*Why* might the following snippet raise a compilation error?
```c
int foo();
int foo(char a);
```
Back: Conflicting types. The first `foo` declares any `char` passed to it default promotes to an `int`.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751547-->
END%%
%%ANKI
Basic
*Why* might the following snippet raise a compilation error?
```c
int foo();
int foo(double a);
```
Back: N/A. It likely wouldn't.
Reference: “ISO: Programming Languages - C,” April 12, 2011, [https://port70.net/~nsz/c/c11/n1570.pdf](https://port70.net/~nsz/c/c11/n1570.pdf).
<!--ID: 1732031751552-->
END%%
### main
`main` is a special function serving as the entrypoint to C programs. It can have several different prototypes, but the following two are always possible:
```c
int main(void);
int main(int argc, char* argv[argc+1]);
```
The only two return values guaranteed to work on all platform is `EXIT_SUCCESS` and `EXIT_FAILURE`. Reaching the end of `main` is equivalent to a `reutrn` with value `EXIT_SUCCESS`.
%%ANKI
Basic
Which function serves as the entrypoint of C programs?
Back: `main`
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415792-->
END%%
%%ANKI
Basic
How many valid prototypes of `main` are available?
Back: Indeterminate. Depends on the system.
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415798-->
END%%
%%ANKI
Basic
How many "official" prototypes of `main` are available?
Back: Two.
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415801-->
END%%
%%ANKI
Basic
What are the "official" prototypes of `main`?
Back:
```c
int main(void);
int main(int argc, char* argv[argc + 1]);
```
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415804-->
END%%
%%ANKI
Basic
What are the "official" prototypes of `main`?
Back:
```c
int main(void);
int main(int argc, char* argv[argc + 1]);
```
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
END%%
%%ANKI
Basic
What are the only portable values that `main` can return?
Back: `EXIT_SUCCESS` and `EXIT_FAILURE`.
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415807-->
END%%
%%ANKI
Basic
Which library defines `EXIT_SUCCESS`?
Back: `stdlib.h`
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415810-->
END%%
%%ANKI
Basic
Which library defines `EXIT_FAILURE`?
Back: `stdlib.h`
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415813-->
END%%
%%ANKI
Basic
What happens when `main` does not explicitly return a value?
Back: `EXIT_SUCCESS` is implicitly returned.
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415816-->
END%%
%%ANKI
Cloze
Returning {1:`s`} in {1:`main`} is equivalent to invoking function {2:`exit`} with argument {2:`s`}.
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415819-->
END%%
%%ANKI
Basic
Which library declares the following prototype?
```c
noreturn void exit(int)
```
Back: `stdlib.h`
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415823-->
END%%
%%ANKI
Basic
What does keyword `_Noreturn` indicate?
Back: The associated callee will never return control back to the caller.
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415827-->
END%%
%%ANKI
Basic
What kind of syntactical construct is `_Noreturn`?
Back: A special keyword.
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415832-->
END%%
%%ANKI
Basic
What kind of syntactical construct is `noreturn`?
Back: A macro.
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415836-->
END%%
%%ANKI
Cloze
{1:`_Noreturn`} is a {2:keyword} whereas {2:`noreturn`} is a {1:macro}.
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415841-->
END%%
%%ANKI
Basic
Which library is `noreturn` defined in?
Back: `stdnoreturn.h`
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415846-->
END%%
%%ANKI
Basic
Consider the following prototype. What is the value of `argv[0]`?
```c
int main(int argc, char* argv[argc + 1]);
```
Back: The name of the program invocation.
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415851-->
END%%
%%ANKI
Basic
Consider the following prototype. What is the value of `argv[argc]`?
```c
int main(int argc, char* argv[argc + 1]);
```
Back: `0`
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415856-->
END%%
%%ANKI
Basic
Consider the following prototype. What is the value of `argv[1]`?
```c
int main(int argc, char* argv[argc + 1]);
```
Back: `0` if `argc == 1` else the first argument to the program.
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415860-->
END%%
%%ANKI
Basic
Consider the following prototype. What is the minimum value of `argc`?
```c
int main(int argc, char* argv[argc + 1]);
```
Back: `1`
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415865-->
END%%
%%ANKI
Basic
Consider the following prototype. What is the minimum length of `argv`?
```c
int main(int argc, char* argv[argc + 1]);
```
Back: `2`
Reference: Jens Gustedt, _Modern C_ (Shelter Island, NY: Manning Publications Co, 2020).
<!--ID: 1732293415869-->
END%%
## Initializers ## Initializers
An **initializer** is an expression that gives an object a value at time of declaration. Only variable-length arrays (VLAs) do not allow for an initializer. The default initializer looks like `{0}`. An **initializer** is an expression that gives an object a value at time of declaration. Only variable-length arrays (VLAs) do not allow for an initializer. The default initializer looks like `{0}`.

View File

@ -84,6 +84,33 @@ Tags: printf
<!--ID: 1708974221761--> <!--ID: 1708974221761-->
END%% END%%
%%ANKI
Basic
What is the purpose of the width field in a `printf` argument?
Back: It specifies a minimum number of characters to ouput.
Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962).
Tags: printf
<!--ID: 1732285301746-->
END%%
%%ANKI
Basic
What is the purpose of the precision field in a `printf` argument?
Back: It specifies the maximum limit on the output, depending on the argument type.
Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962).
Tags: printf
<!--ID: 1732285301754-->
END%%
%%ANKI
Basic
What is the purpose of the length field in a `printf` argument?
Back: It specifies the size of the `printf` argument before default promotion.
Reference: “Printf,” in *Wikipedia*, January 18, 2024, [https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962](https://en.wikipedia.org/w/index.php?title=Printf&oldid=1196716962).
Tags: printf
<!--ID: 1732285301762-->
END%%
%%ANKI %%ANKI
Basic Basic
Which header file contains basic `printf` functionality? Which header file contains basic `printf` functionality?

View File

@ -563,8 +563,8 @@ END%%
Basic Basic
*Why* must FLAs be declared within a function? *Why* must FLAs be declared within a function?
Back: N/A. They can exist elsewhere. Back: N/A. They can exist elsewhere.
Tags: x86-64
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
Tags: x86-64
<!--ID: 1731952634167--> <!--ID: 1731952634167-->
END%% END%%
@ -592,8 +592,8 @@ END%%
Basic Basic
*Why* do variable-length arrays require use of a frame pointer? *Why* do variable-length arrays require use of a frame pointer?
Back: Offsets depend on how much space must be allocated on the stack. Back: Offsets depend on how much space must be allocated on the stack.
Tags: x86-64
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
Tags: x86-64
<!--ID: 1731952634169--> <!--ID: 1731952634169-->
END%% END%%
@ -601,8 +601,8 @@ END%%
Basic Basic
*Why* must VLAs be declared within a function? *Why* must VLAs be declared within a function?
Back: Their implementation relies on frame pointers. Back: Their implementation relies on frame pointers.
Tags: x86-64
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
Tags: x86-64
<!--ID: 1731952634170--> <!--ID: 1731952634170-->
END%% END%%

148
notes/set/cardinality.md Normal file
View File

@ -0,0 +1,148 @@
---
title: Cardinality
TARGET DECK: Obsidian::STEM
FILE TAGS: set::cardinality
tags:
- set
---
## Overview
We say set $A$ is **equinumerous** to set $B$, written ($A \approx B$) if and only if there exists a [[functions#Injections|one-to-one]] function from $A$ [[functions#Surjections|onto]] $B$.
%%ANKI
Basic
Suppose $A$ is equinumerous to $B$. How does Enderton denote this?
Back: $A \approx B$
Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).
<!--ID: 1732295060344-->
END%%
%%ANKI
Basic
What does it mean for $A$ to be equinumerous to $B$?
Back: There exists a bijection between $A$ and $B$.
Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).
<!--ID: 1732295060352-->
END%%
%%ANKI
Basic
Suppose $A \approx B$. Then what must exist?
Back: A bijection between $A$ and $B$.
Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).
<!--ID: 1732295060355-->
END%%
%%ANKI
Basic
Suppose there exists a one-to-one function $F$ from $A$ into $B$. When is $A \approx B$?
Back: When $F$ is also onto $B$.
Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).
<!--ID: 1732295060358-->
END%%
%%ANKI
Basic
Suppose there exists a function $F$ from $A$ onto $B$. When is $A \approx B$?
Back: When $F$ is also one-to-one.
Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).
<!--ID: 1732295060362-->
END%%
%%ANKI
Basic
Suppose there exists a one-to-one function $F$ from $A$ onto $B$. When is $A \approx B$?
Back: Always, by definition.
Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).
<!--ID: 1732295060366-->
END%%
## Equivalence Concept
For any sets $A$, $B$, and $C$:
* $A \approx A$;
* if $A \approx B$, then $B \approx A$;
* if $A \approx B$ and $B \approx C$, then $A \approx C$.
Notice though that $\{ \langle A, B \rangle \mid A \approx B \}$ is *not* an equivalence relation since the equivalence concept of equinumerosity concerns *all* sets.
%%ANKI
Basic
Concisely state the equivalence concept of equinumerosity in Zermelo-Fraenkel set theory.
Back: For all sets $A$, $B$, and $C$:
* $A \approx A$;
* $A \approx B \Rightarrow B \approx A$;
* $A \approx B \land B \approx C \Rightarrow A \approx C$
Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).
<!--ID: 1732295060370-->
END%%
%%ANKI
Basic
Concisely state the equivalence concept of equinumerosity in von Neumann-Bernays set theory.
Back: Class $\{ \langle A, B \rangle \mid A \approx B \}$ is reflexive on the class of all sets, symmetric, and transitive.
Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).
<!--ID: 1732295060374-->
END%%
%%ANKI
Basic
What is the reflexive property of equinumerosity in FOL?
Back: $\forall A, A \approx A$
Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).
<!--ID: 1732295060379-->
END%%
%%ANKI
Basic
What is the symmetric property of equinumerosity in FOL?
Back: $\forall A, B, A \approx B \Rightarrow B \approx A$
Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).
<!--ID: 1732295060383-->
END%%
%%ANKI
Basic
What is the transitive property of equinumerosity in FOL?
Back: $\forall A, B, C, A \approx B \land B \approx C \Rightarrow A \approx C$
Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).
<!--ID: 1732295060387-->
END%%
%%ANKI
Basic
Is $\{ \langle A, B \rangle \mid A \approx B \}$ a set?
Back: No.
Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).
<!--ID: 1732295060390-->
END%%
%%ANKI
Basic
*Why* isn't $\{ \langle A, B \rangle \mid A \approx B \}$ a set?
Back: Because then the field of this "relation" would be a set.
Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).
<!--ID: 1732295060394-->
END%%
%%ANKI
Basic
Is $\{ \langle A, B \rangle \mid A \approx B \}$ an equivalence relation?
Back: No.
Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).
<!--ID: 1732295060398-->
END%%
%%ANKI
Basic
*Why* isn't $\{ \langle A, B \rangle \mid A \approx B \}$ an equivalence relation?
Back: Because then the field of this "relation" would be a set.
Reference: Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).
<!--ID: 1732295060403-->
END%%
## Bibliography
* Herbert B. Enderton, *Elements of Set Theory* (New York: Academic Press, 1977).

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@ -152,7 +152,7 @@ END%%
%%ANKI %%ANKI
Basic Basic
Variable-sized frames use which of `leave` and/or `ret`? Variable-sized frames use which of `leave` and/or `ret`?
Back: Bot Back: Both.
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
<!--ID: 1731952715103--> <!--ID: 1731952715103-->
END%% END%%

View File

@ -585,7 +585,7 @@ END%%
%%ANKI %%ANKI
Cloze Cloze
By convention, register `%rbp` is used for {callee-saved values}. By convention, register `%rbp` is used for {base pointers}.
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
<!--ID: 1730121604421--> <!--ID: 1730121604421-->
END%% END%%
@ -683,8 +683,8 @@ END%%
%%ANKI %%ANKI
Basic Basic
When is the `%rbp` register used? What kind of frames use the `%rbp` register?
Back: When working with variable-sized frames. Back: Variable-sized frames.
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
<!--ID: 1731952634153--> <!--ID: 1731952634153-->
END%% END%%
@ -753,6 +753,23 @@ Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Program
<!--ID: 1731952634161--> <!--ID: 1731952634161-->
END%% END%%
%%ANKI
Basic
Allocate an array in a stack frame. Is the start of the array nearer the stack's top or bottom?
Back: Bottom.
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
<!--ID: 1732025483593-->
END%%
%%ANKI
Basic
Suppose an array exists in "Local variables". What region is trampled in a buffer overflow?
![[buffer-overflow.png]]
Back: The return address.
Reference: Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.
<!--ID: 1732025483600-->
END%%
## Bibliography ## Bibliography
* Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016. * Bryant, Randal E., and David O'Hallaron. *Computer Systems: A Programmer's Perspective*. Third edition, Global edition. Always Learning. Pearson, 2016.