Wie unterscheidet die CPU Daten von Instruktionen?

Eigentlich gibt es da keinen Unterschied!

Sagen wir ich bin auf 0x86

Am Ende des Programms, steht irgendwo 56 26 30, keine Ahnung, habe ich mir gerade ausgedacht.

Natürlich arbeiten wir hier mit Hexzahlen, sonst kommen wir in Teufelsküche.

Frei nach Schnauze, könnte das in Assembler

doof: db "V&0"

sein

5B 88 D8, da passiert sowas wie mov al, bl, bin mir nicht sicher ob es tatsächlich so ist, habe int 0x10, was cd 10 ist, als Orientierungshilfe genutzt.

Meine finale Frage ist, wie unterscheidet das die CPU?

Die kann doch nicht raten, klar, man könnte jetzt behaupten, das eine Instruktion einen gewissen Zahlen Wert hat, was auch so sein muss. CD ist z. B. ,,int".

Dann sage ich, was passiert, wenn ich einfach mal wo frei Schnauze, selbst diesen Zahlenwert in meinen Daten nutze? Das kann die CPU dann nicht mehr Unterscheiden ober schreitet hier der Compiler heldenhaft ein?

Edit: Nein tut er nicht.

db 0xcd, 0x10

Das wird als CD 10 im Bytecode übernommen, direkt, ohne Umwege. Das ist jetzt identisch mit einer int 0x10 Anweisung, die im Bytecode auch als cd 10 steht.

Wie wird dieses Problem geschickt umgangen?

Klar, meine Daten stehen ganz am Ende, bis dort wird die CPU meist sowieso nicht ausführen, da die schon viel früher durch das eigene Programm davon ,,abgehalten wird". Nur meine Daten können ja auch mal mitten drin stehen.

Könnte dass das Programm negativ beeinflussen? Das Dinge passieren, die ich eigentlich gar nicht wollte?

...zum Beitrag

Hallo,

mal etwas ausführlicher:

>>Meine finale Frage ist, wie unterscheidet das die CPU?

Jedes Programm enthält einen Einsprungpunkt (Entry Point) den es global bekannt macht (global _start; global main). An diesem Entry Point beginnt die CPU mit der Ausführung. Das bedeutet, dass die CPU den Wert in dieser Speicherzelle immer als Anweisung (z.b. mov, cmp, nop ...) betrachtet. Nun muss man wissen, das die CPU auswendig weiss, wieviele weitere Bytes zu welchen Befehl im Speicher folgen müssen. Hier mal ein Beispiel:

  400ed7:    b8 34 12 00 00           mov    eax,0x1234
  400edc:    50                       push   rax

Nehmen wir an, der Entry Point ist bei "400ed7". Dann interpretiert die CPU den Wert "b8" als den Befehl "mov eax..." und weiss geleichzeitig, dass dort noch vier weitere Bytes dazu gehören. Somit ist das fünfte Byte wieder ein Befehl "50 = push rax".

Und so weiter

Und so weiter

So, ich hoffe, ich habe Deine Frage richtig verstanden und konnte Dir weiterhelfen.

Mit freundlichen Grüßen

MatzeL aus H

...zur Antwort

Hallo,

also bei einem Noteböökchen, einer Fritzböxchen und einem Druckerchen (auch wenn es ein Laser ist) brauchst Du sicherlich noch nicht an hohe Anlaufströme denken.

Hier mal ein (sehr) einfacher Trick:

  1. Suche die Sicherung, die unter anderem die Steckdose, an der Du Notebook, Fritzbox und Drucker betreiben willst absichert.
  2. Schalte Sie aus und schau was alles andere dann auch nicht mehr läuft. (denke auch an Beleuchtung)
  3. Nun must Du die Energieaufnahme (Watt) aller Geräte die durch diese Sicherung geschützt sind ermitteln und addieren. Das ist meist auf Typenschildern oder Netzteilen (wie z.B. bei der Fritzbox) aufgedruckt.
  4. So, nun schau Dir die Sicherung an. Hier ist der Strom vermerkt. (z.B 10A oder 16A). In einem kleinen Apartment sind auch die fest verlegten Kabel nicht so lang, so dass ich jetzt mal von 16A ausgehe.

Nun können wir mal anfangen zu rechnen:

Die max. Energie die Du an diese Sicherung abnehmen kannst beträgt 3680 Watt. Das ergibt sich aus "230Volt * 16Amp." Ist die oben ermittelte Energieaufnahme höher als diese 3680Watt, ist das ein Fall für einen Elektroinstallateur!!! Ansonsten brauchst Du Dir keine Gedanken machen.

Mit freundlichen Grüßen

MatzeL aus H

...zur Antwort

Hallo,

kommt immer darauf an, was wie wann gesichert werden soll. Über einen Cronjob würde ich das nur machen, wenn sichergestellt ist, dass der Rechner 24/7 läuft. Ist das nicht der Fall, würde ich das über ein Script erledigen. Ich hab da vor längerer Zeit schonmal etwas geschrieben. Schau mal hier.

Mit freundlichen Grüßen

MatzeL aus H

...zur Antwort

Hallo,

direkt in PHP denke ich nicht (so ala Inline-Assembler). Aber ein Programm ausführen geht schon und wenn dieses Programm in Assembler erstellt wurde, sollte da nichts dagegen sprechen.

Siehe mal hier:

https://www.php.net/manual/de/ref.exec.php

Ich hoffe, dass hilft Dir weiter.

Mit freundlichen Grüßen

MatzeL aus H

...zur Antwort

Hallo,

ich habe mir gerade einen Raspi3 mit einer 64GB Karte (Ubuntu 20.04 / Apache2 / PHP / Samba / SSH ) installiert. Ist aber ein reines Konsolensystem. Hier mal die Auslastung. Vielleicht helfen Dir die Daten (für einen erste Einschätzung):

Filesystem     Size Used Avail Use% Mounted on
udev           406M    0 406M  0% /dev
tmpfs           91M 5.7M  86M  7% /run
/dev/mmcblk0p2  59G 2.9G  54G  6% /
tmpfs          455M    0 455M  0% /dev/shm
tmpfs          5.0M    0 5.0M  0% /run/lock
tmpfs          455M    0 455M  0% /sys/fs/cgroup
/dev/loop1      49M  49M    0 100% /snap/core18/1888
/dev/mmcblk0p1 253M  96M 157M 39% /boot/firmware
/dev/loop5      26M  26M    0 100% /snap/snapd/8791
/dev/loop3      64M  64M    0 100% /snap/lxd/16727

MatzeL aus H

...zur Antwort

Hallo,

Deine Frage ist zwar schon einige Tage alt aber ich habe da noch eine zusätzlichen Tip:

Ich würde, trotz Leerrohr, kein einfaches CAT-Kabel nehmen. Es gibt extra Erdleitungen für solche Anwendungen. Die sind besser gegen alle möglichen Gegebenheiten (Feuchtigkeit, Frost usw.) im Aussenbereich geschützt. Hier mal ein Beispiel.

MatzeL aus H

...zur Antwort

Hallo,

naja, ich denke das beide Betriebssysteme ihre "Bereiche" abdecken. Windows ist wohl etwas für Clients, in vielen Unternehmen/Behörden auch für Server. Linux ist eher im Bereich "Server im Internet", "IoT", "Handys" usw. zu finden, ist inzwischen jedoch auch etwas für Clients. Also die Einordnung in "Windows" oder "Windows für Arme" ist sicherlich nicht sehr schlau!

MatzeL aus H

...zur Antwort

Hallo,

also erstmal must Du einen VirtualHost oder eine NameVirtualHost (also IP-basierent oder Namens-basierent) in der apache-configuration einrichten und dort unter DocumentRoot den Pfad des "WebSpace" eintragen.

Da muss dann mindestens eine "index"-Datei (index.htm, index.html, index.php ...) vorhanden sein.

Unterm Strich gesagt, solltest Du Dir die Dokumentation zum Apache-Server anschauen. Sonst wirst Du da kaum Erfolg haben!

MatzeL aus H

...zur Antwort

Hallo,

eigentlich nicht, denn entscheident ist u. a. die Qualität der Datenanbindung. Was möglich wäre, sind unterschiede in der Effektivität der Software (Treiber) oder die momentane Auslastung des Netzwerks (Internet) / Gegenstelle (Server) und das kann schnell sehr stark schwanken.

Das ist auch der Grund, warum die Netzanbieter immer "bis zu ..." in ihren Angeboten stehen haben, denn es gibt keine Garantie auf die zugesagte Geschwindigkeit.

Den Speedtests sollte man auch nicht immer glauben. Ich habe da schon die willdesten Berechnugsfehler gesehen. Manche "Metzger" berechnen da noch ein Kilo mit 1000. Die etwas IT Erfahrenen wissen das ein Kilo da mit 1024 veranschlagt werden muss.

MatzeL aus H

...zur Antwort

Hallo,

ich würde den Vermieter erstmal freundlich um eine Ausgabe des Mietvertrags bitten.

Sollten sich dann eure Vermutungen bestätigen, kann man sich sicherlich an einen Mieterschutzverein oder an einen Rechtsanwalt wenden, denn ich denke, dann ist das sicherlich schon eine Urkundenfälschung.

MatzeL aus H

...zur Antwort
Linux Backuplösung?

Ich suche nach einer für mich passenden Backup-Lösung (unter GNU/Linux), um mein Homeverzeichnis zu sichern.

Bisher verwende ich Grsync, geht soweit so gut, allerdings wenn ich eine Datei versehentlich lösche oder überschreibe und dann ein Backup mache, ist sie auch im Backup weg.

Was ich benötige:
-Zum Sichern des Homeverzeichnisses
-Man sollte (mehrere) Ausnahmen hinzufügen können (zB. brauche ich meine Steam Spiele-Bibliothek nicht zu sichern, genauso wenig das Verzeichnis von Firefox, in dem der Cache gespeichert wird [bringt nichts & verzögert das Backup nur])
-Man muss vor & nach dem Backup automatisch einen Befehl/Shell-Script ausführen lassen können
-Es sollte eine Fortschrittsanzeige haben
-Wichtig ist, was mir bei Grsync so bisher fehlt, ist das auch ältere Backups aufgehoben werden. D.h. wenn ich an Tag 1 ein Backup mache, an Tag 2 eine Datei lösche und an Tag 3 dann wieder ein Backup mache, muss das alte Backup von Tag 1 noch bestehen bleiben, sodass ich die gelöschte Datei wiederherstellen kann. Wichtig ist auch, dass nicht jedesmal wieder alles gesichert wird, sondern nur das, was sich "verändert" hat. D.h. zum Beispiel meine Video-Sammlung, in der sich zwischen Tag 1 und 3 nichts geändert hat, sollte beim Backup von Tag 3 nicht noch einmal gesichert werden. Ältere Backups müssen automatisch gelöscht werden, wenn der Speicherplatz nicht mehr reicht. Dabei dürfen natürlich keine Daten verloren gehen, d.h. z.B. an Tag 200, wenn der Speicherplatz auf der externen Backup-Festplatte nicht mehr reicht, müssen alte Backups gelöscht werden, dabei darf aber die an Tag 1 gesicherte (und weil es keine Änderungen gab nie wieder in einem neueren Backup enthaltene) Video-Sammlung natürlich nicht verloren gehen, sondern es müssen andere, "nicht mehr aktuelle" Daten gelöscht werden (vom Prinzip her also ähnlich wie zB Time Machine).
-Wichtig ist natürlich, dass ich die Daten einfach wiederherstellen kann, zB nach einer Neuinstallation. Ich will mir die Dateien dann nicht einzeln aus den zig Backups wieder von Hand zusammen suchen müssen.
-Die Daten sollten als "normale" Dateien und Ordner gesichert werden, d.h. es sollte kein Archiv wie bei Deja-Dup oder so erstellt werden (gibt mir einfach ein gewisses Sicherheitsgefühl, so kann ich das Backup zur Not auch noch ohne die Backup-Software "von Hand" wiederherstellen).

Vielen Dank!

...zum Beitrag

Hallo,

das sind eine Menge Anforderungen. Ich habe da vor einiger Zeit mal hier in gutefrage.net etwas vorgestellt. Das könnte vieleicht ein Ansatz für Deine Wünsche sein.

Schau mal hier.

MatzeL

...zur Antwort

Hallo,

erstmal vielen Dank für Deine Antwort. Jetzt ist auch bei mir der Groschen gefallen.

Eine entgültige Lösung kann ich Dir leider nicht bieten. Oftmals kann man solche Geräte über eine WEB-Oberfläche konfigurieren oder man kann dort Log-Einträge einsehen, die auf mögliche Fehler hinweisen. Schau doch nochmal in die Anleitung, ob es da so etwas gibt.

MatzeL

...zur Antwort

Hallo,

also, ein RasPi gehört wohl nicht in die Liga "DAW ala Steinberg und Co". Das solltest Du ganz schnell vergessen. Mal ganz unabhänig von den Fehlermeldungen, da fehlt es ganz einfach an Resourcen und Leistung, die für solche Anwendungen zwingend notwendig sind.

MatzeL aus H

...zur Antwort

Hallo,

also, das dass Gewicht der Lampe an den (merkwürdigen) Kabelklemmen hängen soll, ist schonmal "hoch gefährlich". Weiterhin kann ich da keine VDE-Kennzeichnung finden. Stattdessen CQC, also China-Müll und die missbrauchen die Kennzeichnung CE als "China Export". Das hat nichts mit dem Prüfzeichen zu tun.

DAS IST GEFÄHLICHER SCHROTT !!!!

Ich rate Dir: Lass die Finger davon!

MatzeL aus H

...zur Antwort

Hallo,

die Lebensdauer eines Akku wird durch die Lade-Endladezyklen bestimmt. Das bedeutet, wenn Du einen Akku 2x von 50% bis 100% auflädst ist das "ein" Zyklus oder wenn Du ihn 4x von 75% bis 100% auflädst ist das ebenfalls "ein" Zyklus. Es ist also egal, ob Du ihn ab 50%+ lädst.

Was Du nicht machen solltest, ist dafür zu sorgen, dass er Tiefentladen (0%) wird. Das würde ihn zerstören!

MatzeL aus H

...zur Antwort

Hallo,

kommt darauf an, was Du machen willst/musst.

In erster Linie solltest Du aber beachten, dass Linux (JEDES Linux) keine grafische Oberfläche hat und somit viele Arbeiten eben auf der Konsole erledigt werden müssen.

Die (vielen) GUIs haben erstmal nichts mit dem Betriebssystem "Linux" zu tun. Das heisst, wenn Du Dich mit Linux beschäftigen möchtest, wirst Du über lang oder kurz nicht an der Konsole vorbei kommen.

MatzeL aus H

...zur Antwort

Hallo,

sprechen wir hier über PHP im Rahmen einer Modulerweiterung im Web-Server (Apache) oder über PHP im Rahmen von CGI-Scripten? Das sind erstmal zwei völlig verschiedene Welten!

MatzeL aus H

...zur Antwort

Hallo

als DNS nutzt Du offensichtlich Deinen Router. Wenn er die IP nicht via DHCP vergibt, trägt er sie auch nicht im DNS ein, was zur Folge hat, dass die IP nicht aufgelöst werden kann. Ich kenne leider Dein Router Model nicht. Schau doch mal, ob Du die IP im Router DNS manuell eintragen kannst. Ansonsten gibt es da noch die Möglichkeit, die IP im DHCP des Routers zu reservieren (wird dann dauerhaft an die MAC Adresse gebunden) und der VM die IP doch via DHCP zuzuordnen.

MatzeL aus H

...zur Antwort

Hallo,

bei mir ist es jetzt ca. 40Jahre her als ich mit einem ZX81 angefangen habe in Assembler zu programmieren. Glaub mir, es ist nicht möglich mal eben so etwas in einem kurzen Video zu lernen. Was Du brauchst ist Durchhaltevermögen, gute und ausführliche Tutorials, das eine oder andere Buch und dann wirst Du sicherlich bald Dein erstes "WOW" Erlebnis haben. Dann ist es nicht mehr weit bis zum Assemblerjunkie.

Ich wünsche Dir viel Erfolg!!!

MatzeL aus H

...zur Antwort

Hallo,

hast Du mal versucht sie neu zu partitionieren?

MatzeL aus H

...zur Antwort