Hallo, kann mir jemand erklären was folgender Satz bedeutet, "the
readbuffer must be on 4-byte boundary". Die einzelnen Wörter sind mir
klar, nur was bedeutet der Ausdruck "4-byte boundary" für die größe
meines readbuffers ?
Danke.
Marcus
Marcus wrote:
> Hallo, kann mir jemand erklären was folgender Satz bedeutet, "the> readbuffer must be on 4-byte boundary". Die einzelnen Wörter sind mir> klar, nur was bedeutet der Ausdruck "4-byte boundary" für die größe> meines readbuffers ?
Für die Größe normalerweise nichts, aber für die Ausrichtung.
Das bedeutet im Regelfall, dass die Startadresse des buffers
ganzzahlig durch 4 teilbar sein muss.
Hallo,
4-byte boundary bedeutet, dass die Anfangsadresse deines Buffers durch 4
teilbar sein muss, z.B. 0x0, 0x8, 0x1234FEDC usw.
Vermutlich handelt es sich um einen 32-bit Prozessor der die Daten nur 4
byte weise bewegen kann. Es ist daher sehr wahrscheinlich, dass auch die
Buffergrösse ein Vielfaches on 4 sein muss. Lies noch mal genau im
Datenblatt nach. Welcher Prozessor ist es denn ?
Gruss
Mike
hallo,
ich suche verzweifelt nach den unterschied zwischen 1-byte boundary und
8-byte boundary...
leider kann ich nichts finden.
kann mir jemand von euch einige vor- bzw. nachteile nennen?
lg lis
8 Byte-boundary heißt, der Speicher ist byteweise duchnummeriert, aber
der Prozessor kann nur 64 Bit breit, also alle 8 Byte zugreifen. Deshalb
muß die Adresse durch 8 teilbar sein, oder anders gesagt die unteren 3
Bit der Adresse sind Null.
Hallo Lis,
die Frage ist ein wenig seltsam gestellt.
Nach der obigen Erklärung sind 1-byte-boundary und 8-byte-boundary eben
einfach nur 1-Byte-Grenzen und 8-Byte-Grenzen. Nichts weiter.
Wesentlich sind die folgenden drei Punkte:
1. Welche Adressierungsarten bietet der Prozessor bzw. wie ist die
Hardware des Prozessors intern gestaltet, die den Datenzugriff ausführt?
2. Wie ist Speicherzugriff in der Hochsprache unter berücksichtigung von
Punkt 1 realisiert?
3. Wie sind die zu verarbeitenden Daten strukturiert?
Zum Beispiel könnte ein 32-Bit Prozessor mit 8-Bit Datenbus sehr
wahrscheinlich Adressierungsarten und HW zum Zugriff haben, die auf 4
Byte-Zugriffe optimiert sind. Das könnte auch beinhalten, das die
unteren 2 Bits der Adresse garnicht für den Programmierer zugänglich
sind und damit Daten immer 32 Bit lang und grundsätzlich an
4-Byte-Boundaries ausgerichtet sein müssen. Eine entsprechende
Hochsprache für diesen Prozessor könnte 8 oder 16 Bit Daten emulieren,
indem es zwar den 4-Byte-Zugriff benutzt (eine andere Möglichkeit gibt
es in diesem theoretischen Beispiel ja nicht) die jeweils irrelevanten
Bits aber durch zusätzliche Assembler-Befehle aber löscht (oder beim
Schieben der relevanten Bits überschreibt). Diese gesparten 2 Adressbits
könnte ein Prozessorhersteller als Vorteil sehen.
Eine Entscheidung für irgendeine der n-bit-boundaries ist also
hauptsächlich von dem Prozessor abhängig und steht Dir nicht einfach
frei.
Sie ist eine Konsequenz der Architektur.
Für den Programmierer hat eine vorhandene Grenze an sich weder Vor- noch
Nachteile. Solche Fragen machen erst im Zusammenhang mit einem konkreten
Algorithmus bzw. einer konkreten Datenstruktur Sinn.
Es mag z.B. sein, das Input-Daten keine homogene Struktur haben. Also
etwa unregelmäßig mal 1 Byte und mal 2 Byte lang sind. Wenn der
Prozessor nur auf an 2-Byte-Boundaries ausgerichtete Daten zugreifen
kann oder dies am effizientesten kann (oder das durch mehrere Befehle
emuliert wird) wäre es sinnvoll sich darüber Gedanken zu machen die
Eingangsdaten umzustrukturieren. Es ist also auch hier die
Prozessorarchitekur relevant.
Hoffe das hilft Dir weiter.
Gruss
Oops
Hallo,
Danke für die antworten! Helfen auf jeden fall mal weiter...
Um genauer drauf einzugehen – ich möchte ein programm von 1-byte
boundary auf 8-byte boundary ändern. Dafür würde ich gerne die zwei
boundary arte gegenüberstellen (vor- und nachteile, unterschiedlich in…)
– leider find ich nicht viel darüber (wie schon erwähnt).
Den groben unterschied zwischen 1- und 8-byte boundary kenn ich … aber
das wars dann auch schon….
Kennt jemand einen guten link oder literatur ?
Lg lis
Also ehrlich Lis,
ich bin ein wenig frustriert die selbe Frage von Dir nochmal zu lesen.
Lies doch bitte mal was ich geschrieben habe und die Links die Dir
Christoph freundlicherweise herausgesucht hat.
Denk nur daran, das zwei Dinge ne Rolle spielen: Prozessorarchitektur
und Datenstruktur.
Je nach Ausprägung der beiden Faktoren kann 8 gegenüber 4 ein Vorteil
oder ein Nachteil sein. Da kann man keine allgemeinen Aussagen drüber
machen. Deswegen findest Du da auch keine Tabelle im Netz, die Vor- und
Nachteile von 1 bis n gegenüberstellt. Ausserdem hängt die Antwort noch
davon ab, was Du machen willst. Für den Prozessorarchitekt kann
diesselbe Wortbreite ein Vorteil sein, die für den Programmierer ein
Nachteil ist. Wenn Du 3-Byte Worte verarbeiten musst ist 4-Byte
Wortbreite ein Nachteil, uswusf.
Denk mal bitte ein wenig selbst nach. Das Ganze ist im Grunde trivial.
Gruss
Oops