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
http://de.wikipedia.org/wiki/Speicherausrichtung http://en.wikipedia.org/wiki/Data_structure_alignment mit Links zu weiterem
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.