Assembler und Regex
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
# Assembler
|
||||
|
||||
## Die Maschine
|
||||
|
||||
### Was ist eine CPU
|
||||
|
||||
Die CPU (Central Processing Unit) ist das Gehirn des Computers. Aber im Gegensatz zu einem menschlichen Gehirn ist sie tatsächlich sehr einfach. Sie tut nur eine Sache: Sie liest Anweisungen aus dem Speicher und führt sie eine nach der anderen sehr schnell aus. Wenn du Assembly-Code schreibst, gibst du der CPU direkte Anweisungen.
|
||||
|
||||
Im Gegensatz zu Hochsprachen wie Python oder JavaScript, die Hardwaredetails verbergen, ermöglicht dir Assemblersprache, genau zu steuern, was die CPU Schritt für Schritt tut.
|
||||
|
||||
Stell dir die CPU als einen sehr schnellen Arbeiter vor, der:
|
||||
|
||||
- Nicht selbstständig denken oder Entscheidungen treffen kann
|
||||
- Einfache Befehle wie „add these two numbers“ oder „move this value there“ befolgt
|
||||
- Jede Sekunde Millionen solcher einfachen Befehle ausführt
|
||||
|
||||
Im Inneren der CPU gibt es winzige Speicherboxen, die **Register** genannt werden. Ein Register enthält eine einzelne Zahl. Die CPU kann auf Register extrem schnell zugreifen, viel schneller als auf den Hauptspeicher (RAM).
|
||||
|
||||
Die CPU verfügt außerdem über ein spezielles Register namens **Program Counter (PC)**. Der PC enthält die Speicheradresse der nächsten auszuführenden Anweisung. Nach jeder Anweisung wechselt der PC automatisch zur nächsten Adresse.
|
||||
|
||||
**Wichtige Fakten über eine CPU:**
|
||||
|
||||
| Fakt | Erklärung |
|
||||
| ------------------------------------------------- | -------------------------------------------------------------- |
|
||||
| Sie führt jeweils eine Anweisung aus | Kein Multitasking auf Hardwareebene |
|
||||
| Sie versteht nur Zahlen | Alles (Anweisungen, Daten, Adressen) ist eine Zahl |
|
||||
| Sie hat keinen eigenen Speicher (außer Registern) | Alles muss im RAM gespeichert werden |
|
||||
| Sie ist unglaublich schnell | Moderne CPUs führen Milliarden von Anweisungen pro Sekunde aus |
|
||||
|
||||
### Speicher
|
||||
|
||||
In der vorherigen Lektion hast du gelernt, dass die CPU Anweisungen eine nach der anderen ausführt. Aber wo werden diese Anweisungen gespeichert? Wo bewahrt die CPU die Daten auf, die sie verarbeiten muss?
|
||||
|
||||
Die Antwort lautet **Speicher** (auch RAM genannt: Random Access Memory).
|
||||
|
||||
Der Speicher ist wie ein riesiges Raster aus nummerierten Speicherplätzen. Jeder Speicherplatz hat eine eindeutige **Adresse** (wie eine Hausnummer) und kann ein Byte an Daten aufnehmen (eine Zahl von 0 bis 255). Wenn du etwas im Speicher speicherst, legst du es in einem bestimmten Speicherplatz mit einer bestimmten Adresse ab. Wenn du es wieder benötigst, rufst du die Daten an dieser Adresse ab.
|
||||
|
||||
**Stell dir den Speicher wie ein Postamt mit nummerierten Postfächern vor:**
|
||||
|
||||
- Jedes Fach hat eine eindeutige Nummer (die Adresse)
|
||||
- Jedes Fach kann einen Brief aufnehmen (ein Byte an Daten)
|
||||
- Du kannst einen Brief in jedes beliebige Fach legen
|
||||
- Du kannst jedes beliebige Fach öffnen und lesen, was sich darin befindet
|
||||
|
||||
Die CPU kann die Daten an der Adresse 1000 anfordern, und der Speicher gibt sie zurück. Die CPU kann auch neue Daten an die Adresse 1000 schreiben und damit die zuvor dort vorhandenen Daten ersetzen.
|
||||
|
||||
**Wichtige Fakten über den Speicher:**
|
||||
|
||||
| Fakt | Erklärung |
|
||||
| --------------------------------- | --------------------------------------------------------------------------------------------- |
|
||||
| Jedes Byte hat eine Adresse | Adressen beginnen bei 0 und reichen bis zu Millionen oder Milliarden |
|
||||
| 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 |
|
||||
@@ -0,0 +1,83 @@
|
||||
# Regular Expressions Cheat Sheet
|
||||
|
||||
A regular expression specifies a set of strings that matches it. This cheat sheet is based off Python 3's Regular Expressions (http://docs.python.org/3/library/re.html) but is designed for searches within Sublime Text.
|
||||
|
||||
## Special Characters
|
||||
|
||||
| | |
|
||||
| --- | ----------------------------------------------------------- |
|
||||
| `\` | Escapes special characters or signals a special sequence. |
|
||||
| `.` | Matches any single character except a newline. |
|
||||
| `^` | Matches the start of the string. |
|
||||
| `$` | Matches the end of the string |
|
||||
| `*` | Greedily matches 0 or more repetitions of the preceding RE. |
|
||||
| | |
|
||||
| | |
|
||||
| | |
|
||||
| | |
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
`*?` Matches 0 or more repetitions of the preceding RE.
|
||||
|
||||
+ Greedily matches 1 or more repetitions of the preceding RE.
|
||||
|
||||
+? Matches 1 or more repetitions of the preceding RE.
|
||||
? Greedily matches 0 or 1 repetitions of the preceding RE.
|
||||
?? Matches 0 or 1 repetitions of the preceding RE.
|
||||
A|B Matches A, if A is unmatched then matches B, where A and B are arbitrary REs.
|
||||
{m} Matches exactly m many repetitions of the previous RE.
|
||||
{m,n} Greedily matches from m many to n many repetitions of the previous RE.
|
||||
{m,n}? Matches m many to n many repetitions of the previous RE.
|
||||
|
||||
[...] Indicates a set of characters to match.
|
||||
[amk] Matches 'a', 'm', or 'k'.
|
||||
[a-z] Matches 'a' through 'z'.
|
||||
[a-f0-7] Matches 'a' through 'f' or '0' through '7'.
|
||||
[a\-z] Matches 'a', '-', or 'z'.
|
||||
[a-] Matches 'a' or '-'.
|
||||
[-a] Matches 'a' or '-'.
|
||||
[(+*)] Matches '(', '+', '*', or ')'. [] matches special characters literally.
|
||||
[\w] Matches the character class for '\w'. See character classes.
|
||||
[^5] Matches anything other than '5'. '^' forms the complementary set only as the first character in a set.
|
||||
[]()] Matches ']', '(', and ')'. ']' is taken literally only as the first character in a set.
|
||||
[()\]] Matches ']', '(', and ')'.
|
||||
|
||||
(...) Matches the RE inside the parenthesis and assigns a new group.
|
||||
(?P<name>...) The RE matched is accessible by the group indicated by name.
|
||||
|
||||
(?...) Extension notation which changes a RE's behavior. These do not assign a new group.
|
||||
(?aiLmsux) Sets the corresponding flag to each letter. Does not work within Sublime Text.
|
||||
(?:...) A non-capturing version of parenthesis. The matched substring cannot be retrieved later.
|
||||
(?P=name) Matches the substring matched by the group named name.
|
||||
(?#...) A comment, the contents are ignored.
|
||||
(?=...) Lookahead assertion, the preceding RE only matches if this matches.
|
||||
(?!...) Negative lookahead assestion, the preceding RE only matches if this doesn't match.
|
||||
(?<=...) Positive lookbehind assertion, the following RE will only match if preceeded with this fixed length RE.
|
||||
(?<!...) Negative lookbehind assertion, the following RE will only match if not preceeded with this fixed length RE.
|
||||
(?(id)true|false) If group id exists then uses the true RE, else use the false RE.
|
||||
|
||||
> Character classes
|
||||
> \1 Matches the contents of the group labelled by the same number. Acceptable numbers are 1-99.
|
||||
> \A Matches at the start of the current string.
|
||||
> \b Matches the empty string at the beginning or end of a word. \b matches the boundary between \w and \W.
|
||||
> \B Matches the empty string not at the beginning or end of a word.
|
||||
> \d Matches any Unicode decimal digit, including 0-9.
|
||||
> \D Matches any Unicode non-decimal digit.
|
||||
> \s Matches any Unicode whitespace character, including ' ', \t, \n, \r, \f and \v.
|
||||
> \S Matches any Unicode non-whitespace character.
|
||||
> \w Matches any Unicode word character, including a-z, A-Z, and 0-9.
|
||||
> \W Matches any Unicode non-word character.
|
||||
> \Z Matches at the end of the string.
|
||||
|
||||
\a Matches the ASCII Bell ().
|
||||
\f Matches the ASCII Formfeed ().
|
||||
\n Matches the ASCII Linefeed.
|
||||
\r Matches the ASCII Carriage Return (
|
||||
).
|
||||
\t Matches the ASCII Horizontal Tab.
|
||||
\v Matches the ASCII Vertical Tab ().
|
||||
Reference in New Issue
Block a user