Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

... SW hart kodieren ...

Turbo / 7 Antworten / Baumansicht Nickles

Hi folks...

habe da ein kleines Begriffsproblem... und ihr Spezialisten könnt mir da sicher weiterhelfen...

Was genau versteht man unter "...hart kodierter Software..."?
Ist darunter auch zu verstehen dass zB. SW auf ein ROM oder EEPROM geschrieben wird? Ist das "hart kodiert"?

Vielen Dank für eure Hilfe...

Gruss,
Turbo

bei Antwort benachrichtigen
JamesBomb Turbo „... SW hart kodieren ...“
Optionen

Nee. Jeder Prozessorbefehl entspricht einer Zahl. So steht zB. 0x90 für den Befehl "nop". Du kannst nun in ein Assemblerprogramm entweder
nop schreiben oder DB 0x90. Das zweite ist dann hart kodiert. Zum harten kodieren könntest du auch nen Hexeditor nehmen und nacheinander Zahlen eintippen...nur: du kommst nicht weit.

bei Antwort benachrichtigen
Turbo JamesBomb „Nee. Jeder Prozessorbefehl entspricht einer Zahl. So steht zB. 0x90 für den...“
Optionen

Dank Dir vielmals für Deine Antwort... und entschuldige meine Unwissenheit...

aber wo wird dann der im Assemblerprogramm hart kodierte Code abgelegt? Und WAS steht dann WIE im ROM drinn?

Vielen Dank für Deine Mühe,
Gruss,
Turbo

bei Antwort benachrichtigen
JamesBomb Turbo „Dank Dir vielmals für Deine Antwort... und entschuldige meine Unwissenheit......“
Optionen

Deine Unwissenheit sei dir vergeben oh Unwürdiger *g.
Der harte Code wird genauso abgeladen wie jeder andere Code auch.
B.:
für .com:
org 0x100

push cs
pop ds

mov ax, 3
DB 0x90
nop

der Prozessor führt dann DB 0x90 und nop genauso aus, weil nop vom Assembler zu 0x90 übersetzt wird.
Im ROM steht meist so Zeuchs wie das BIOS drin. ... hat aber nix mit Assembler zu tun.

bei Antwort benachrichtigen
Dreamforger JamesBomb „Nee. Jeder Prozessorbefehl entspricht einer Zahl. So steht zB. 0x90 für den...“
Optionen

Tut mit leid JB aber so eine definition von Hartcodiert hab ich noch nie gesehen. Du beschreibst den Unterschied zwischen Maschinensprache und Maschinencode.

Ob ein Programm hartkodiert ist, bezieht sich meist darauf wie der Quellcode aufgebaut ist! In Hartcodierten Programmen wird an jeder stelle an der ein Wert verwendet wird eine Zahl eingesetzt, nicht hardcodierte Programme verwenden an dieser Stelle eine Variable die mit dem Wert vorbelegt ist. Der Vorteil von hardkodierten Programmen ist das sie unter Umständen minimal schneller sind, dafür sind nicht Hardcodierte Programme leichter zu warten.

z.B: ein programm das zuerst 100 zufallszariablen in einem Array erzeugt und dann in einem zweiten Array die Mittelwerte je zweier Zufallswerte speichert. (Sinnlos aber lehrreich)

Hardkodiert (fast echter Code)

int i;
int *a = new int[100];
for (i=0; i a[i] = rand;

int *b = new int[99];
for (i=0; i b[i] = (a[i]+a[i+1])/2;

Nicht Hardkodiert


int ARRAYSIZE = 100;
int i;
int *a = new int[ARRAYSIZE];
for (i=0; i

bei Antwort benachrichtigen
Turbo Nachtrag zu: „... SW hart kodieren ...“
Optionen

Jetzt hab ich's glaub gerafft...

thx a lot jamesbomb...

cu out here...

Gruss,
Turbo

bei Antwort benachrichtigen
Dreamforger Turbo „Jetzt hab ich s glaub gerafft... thx a lot jamesbomb... cu out here... Gruss,...“
Optionen

Kaum passt man mal ein paar tage nicht auf, schon kursieren hier die interesantesten gerüchte. Was dir James Bomb da so schön erklärt hat ist der Unterschied zwischen Maschinensprache(Assembler) und Maschinencode (das was dein kleiner AMD/Intel versteht)

Ob ein Programm hartkodiert ist, bezieht sich meist darauf wie der Quellcode aufgebaut ist! In Hartcodierten Programmen wird an jeder stelle an der ein Wert verwendet wird eine Zahl eingesetzt, nicht hardcodierte Programme verwenden an dieser Stelle eine Variable die mit dem Wert vorbelegt ist. Der Vorteil von hardkodierten Programmen ist das sie unter Umständen minimal schneller sind, dafür sind nicht Hardcodierte Programme leichter zu warten.

z.B: ein programm das zuerst 100 zufallszariablen in einem Array erzeugt und dann in einem zweiten Array die Mittelwerte je zweier Zufallswerte speichert. (Sinnlos aber lehrreich)

Hardkodiert (fast echter Code)

int i;
int *a = new int[100];
for (i=0; i a[i] = rand;

int *b = new int[99];
for (i=0; i b[i] = (a[i]+a[i+1])/2;

Nicht Hardkodiert


int ARRAYSIZE = 100;
int i;
int *a = new int[ARRAYSIZE];
for (i=0; i

bei Antwort benachrichtigen
Turbo Nachtrag zu: „... SW hart kodieren ...“
Optionen

Hi Dreamforger...

habe übers Wochenende noch bei ein paar weiteren Typen nachgefragt... und da meinten die Jungs genau dasselbe wie Du hier jetzt geschrieben hast... (am Anfang war's ja ziemlich verwirrend, da ich nur JB's Antw. gelesen hab.... aber da Du jetzt unabhängig genau die gleiche Antwort geschrieben hast ist die Sache jetzt so klar wie ein Gebirgswässerchen... )

Dank Dir vielmals...
cu,
Turbo

bei Antwort benachrichtigen