Wieder aus Coddy erweitert

This commit is contained in:
2026-09-07 07:54:54 +02:00
parent df5138972f
commit f7478b9b25
4 changed files with 40 additions and 42 deletions
+40
View File
@@ -52,3 +52,43 @@ Die CPU kann die Daten an der Adresse 1000 anfordern, und der Speicher gibt sie
| Der Speicher ist flüchtig | Wenn du den Computer ausschaltest, verschwindet alles im RAM |
| Lesen zerstört keine Daten | Du kannst die Adresse 1000 eine Million Mal lesen, und sie enthält weiterhin denselben Wert |
| Schreiben überschreibt alte Daten | Wenn du neue Daten an die Adresse 1000 schreibst, sind die alten Daten für immer verschwunden |
### Register vs. Speicher
Du hast nun etwas über zwei Orte gelernt, an denen Daten in einem Computer gespeichert werden können:
- **Register**: winzige Speicherplätze innerhalb der CPU
- **Memory (RAM)**: ein riesiges Raster nummerierter Speicherplätze außerhalb der CPU
Aber warum gibt es zwei Orte? Warum kann die CPU nicht einfach direkt mit dem Speicher arbeiten?
Die Antwort lautet: Geschwindigkeit. Register sind extrem schnell, weil sie sich innerhalb der CPU befinden. Der Speicher ist langsamer, weil er sich außerhalb befindet. Die CPU kann in einem einzigen Zyklus auf ein Register zugreifen, aber der Zugriff auf den Speicher dauert viel länger.
**Vergleich nebeneinander:**
| Merkmal | Register | Speicher (RAM) |
| --------------------------- | ------------------------------------------- | ------------------------------------------- |
| Position | Innerhalb der CPU | Außerhalb der CPU |
| Geschwindigkeit | Extrem schnell (1 Zyklus) | Langsamer (viele Zyklen) |
| Anzahl der Speicherplätze | Sehr wenige (16-32 bei x86-64) | Millionen oder Milliarden |
| Größe jedes Speicherplatzes | 8 Byte (64 Bit) | 1 Byte |
| Wie du auf sie zugreifst | Nach Namen (`rax`, `rbx`, `rcx`...) | Nach Adresse (`1000`, `msg`, `buffer`) |
| Flüchtig? | Ja (verschwindet bei ausgeschaltetem Gerät) | Ja (verschwindet bei ausgeschaltetem Gerät) |
**Die wichtigste Regel in Assembly:**
> **Die CPU kann nicht direkt mit Daten im memory arbeiten. Daten müssen zuerst in register geladen werden.**
Dies ist nicht optional. So ist die CPU konzipiert. Jede Addition, jeder Vergleich, jede Datenbewegung muss über ein register erfolgen.
**Das Drei-Schritte-Muster, das du ständig verwenden wirst:**
| Schritt | Was passiert | Beispiel |
| -------- | --------------------------------------------------------------- | ------------------- |
| 1. LOAD | Daten aus dem Speicher in ein Register kopieren | `mov rax, [count]` |
| 2. WORK | Etwas mit dem Register tun | `add rax, 5` |
| 3. STORE | Das result zurück in den Speicher kopieren (falls erforderlich) | `mov [result], rax` |
**Was passiert, wenn du diese Regel vergisst?**
Wenn du versuchst, zwei Zahlen zu addieren, die sich beide im Speicher befinden, gibt der Assembler einen Fehler aus. Die CPU kann das einfach nicht tun. Du musst sie zuerst in Register laden.
-1
View File
@@ -71,4 +71,3 @@ ubuntu latest 75afc20638b6 4 days ago 81.8MB
Um die Liste auf ein Repository einzugrenzen, übergibt man dessen Namen:
`docker images alpine` zeigt nur die `alpine`-Tags an.
-2
View File
@@ -1013,8 +1013,6 @@ Zusammengefasst:
> **`/etc/passwd` beschreibt den Benutzer, `/etc/shadow` beschreibt vor allem seinen Passwort- und Ablaufstatus.**
###############
Änderungen an Profil-Dateien wie `~/.bashrc` erfordern eine neue Shell-Sitzung oder das explizite Ausführen von `source ~/.bashrc`, damit sie in der aktuellen Sitzung wirksam werden.
-39
View File
@@ -942,8 +942,6 @@ select seat from ministers where (seat % 2 = 0) and (is_spoke_bad = 0 or is_spok
##############################################################
Recap - Police Criminal Arrest
Challenge
@@ -962,8 +960,6 @@ Ein schwerer Krimineller ist jemand, der alle folgenden Kriterien erfüllt:
Benenne die Spalte als `worst_criminals`.
select name as worst_criminals from police_report where (report like '%g%' or report like '%b%' or report is null ) and map in ('Caerleon', 'Dewsbury', 'Kirkwall', 'Findochty') order by severe_score desc limit 5
##############################################################
@@ -996,38 +992,3 @@ Führen Sie diese Schritte aus:
- Dringendste zuerst (älteste abgelaufene Säfte)
- Dann fast abgelaufene Säfte
- Verwenden Sie (current_year - expiration_year) zum Sortieren
Lösung select id as to_renew from beverages where (current_year - expiration_year > 6 ) or (expiration_year = current_year + 1) or (current_year = expiration_year) order by (current_year - expiration_year) desc
##############################################################
Recap - Engineer new columns
challenge icon
Challenge
Einfach
Verfügbare Tabellen und Spalten:
items: id
Eine quartische Funktion ist definiert:
f(x) = ax4+bx3+cx2+dx+e
Definieren wir die konstanten Parameter:
a = 3
b = 5
c = 0.9
d = 2.2
e = 1
Holen Sie die IDs und die quartische Funktion ab, wobei x die ID ist, und benennen Sie die Spalte in quartic um
Verwenden Sie keine integrierten Funktionen wie POWER()!
Um Potenzen von 2 oder 3 zu berechnen, verwenden Sie das folgende Beispiel:
a*a
-- Potenz von 2
a*a*a
-- Potenz von 3