Anzeige:
Ergebnis 1 bis 8 von 8

Thema: ISO Norm für Adressierung von Speicher ?

  1. #1
    Newbie and practicing Avatar von Newbie314
    Registriert seit
    Mar 2007
    Beiträge
    7.639

    ISO Norm für Adressierung von Speicher ?

    Hi !

    Bei uns hat sich gerade herausgestellt dass zwei an einem Projekt beteiligte Gruppen die Speicheradressen unterschiedlich "zählen".

    Die eine zählt bytes und kann dann wenn die kleinste adressierbare Speichereinheit z.B. 16 bit ist nur jedes zweite Byte überhaupt ansprechen, die andere zählt "words", d.h. der nächsthöhere Zählerstand gibt dann das nächste 16 Bit Word an.

    Die beiden Gruppen müssen sich auf eine gemeinsame Schreibweise einigen: gibt es dazu vielleicht eine internationale Norm ? Per Google fand ich nichts, Wikipedia geht auch nicht darauf ein.. vielleicht hatte jemand hier in seiner Ausbildung von einem Standard gehört ?

    (Worauf die sich einigen ist mir eigentlich schnurz, aber sollte es eine Norm geben hätte ich gerne eine Einigung die dieser entspricht...)
    Bei Konsolenausgaben / Fehlermeldungen bitte immer Code Tags verwenden: [code] -Text- [/code]
    "Überzeugungen sind gefährlichere Feinde der Wahrheit als Lügen" (H. Lesch)

  2. #2
    ****verdreher
    Registriert seit
    Sep 2003
    Beiträge
    322
    Ich bin kein Informatiker und kenne auch keine ISO Norm dazu.
    Macht doch einfach was eher Sinn ergibt, d.h. wenn ihr als kleinste Einheit Bytes verwendet dann nehmt Bytes zum Zählen.

    Über irgendwelche "Normen" wie man so was machen sollte habe ich mir als Hobbyprogrammierer noch nie nen Kopf gemacht. Da habe ich eher was mit Standards wie HTTP oder so was zu tun.

    Manchmal musste ich auch selbst was entwickeln was es so vorher nicht gab.
    Hauptsache das was man macht passt für den Einsatzzweck.

    Ist jetzt wohl nicht die Antwort geworden die Du haben wolltest...
    "... der Großteil hier hat einfach keine Lust, jede Pore einer Brotscheibe mit Butter auszuschmieren." - Susu
    https://midnight-koder.net/blog/
    https://github.com/koder77

  3. #3
    Registrierter Benutzer
    Registriert seit
    Apr 2009
    Ort
    Erde
    Beiträge
    2.819
    Hallo,

    auch ich kann dir hier keinen Standard nennen. Allerdings, wenn ihr nicht total weit unter der Haube arbeitet, stellt sich die Frage, wofür ihr das braucht. Was passiert wenn auf einmal 32 oder gar 64 Bitter mit spielen?
    Die eine zählt bytes und kann dann wenn die kleinste adressierbare Speichereinheit z.B. 16 bit ist nur jedes zweite Byte überhaupt ansprechen.
    Ist das garantiert? Glaube nicht das man das kann, außer vielleicht man verwendet Sprachen die ohne Pointer auskommen; solche Sprachen zeichnen sich auch dadurch aus, dass Typklarheit vorliegt (wie viel bit hat ein int in c; man weiß es einfach nicht). Die Lösung sind also eigene Typen, die gefälligst von beiden verwendet werden, dann sind so Sachen jedenfalls etwas sicherer:
    Code:
    void whatEver(my_byte *buffer)
    {
      my_byte  *pos = buffer;
      my_uint8  v1;
      my_uint16 v2;
      //...
      memcpy(&v1, pos, sizeof(my_uint8));
      pos += (sizeof(my_uint8)/sizeof(my_byte));
      memcpy(&v2, pos, sizeof(my_uint16));
      pos += (sizeof(my_uint16)/sizeof(my_byte));
      //...
    }
    Oder verstehe ich dich gerade völlig falsch?
    Geändert von nopes (27.11.13 um 19:10 Uhr) Grund: Code Schnippsel korrigiert
    Gruß nopes
    (,,,)---(^.^)---(,,,) /var/log/messages | grep cat

  4. #4
    Registrierter Benutzer Avatar von ThorstenHirsch
    Registriert seit
    Nov 2002
    Beiträge
    6.558
    Was ist denn das Problem? Man kann doch beides umrechnen ins jeweils andere. Lass doch jede Gruppe das zählen, was sie lieber wollen. ...solange jeder die Einheit dazu schreibt.

    P.S.: Was habt ihr denn für ein merkwürdiges System, bei dem nicht jedes Byte adressierbar ist? Bei den heutigen 64bit-Systemen hat man 64bit words, aber kann trotzdem jedes Byte adressieren. Wieso geht das bei eurer 16bit-Plattform nicht?

    edit: Ich hab' das Sternchen wieder gelöscht - da hatte ich wohl word mit long verwechselt.

    edit2: Ach herrje, das kann man ja gar nicht so pauschal sagen. Mein Handy hat 32bit words, mein Computer nur 16bit. Ist ja schrecklich.
    Geändert von ThorstenHirsch (27.11.13 um 17:49 Uhr)
    ¡Nuestro amigo... el Computador!

  5. #5
    Registrierter Benutzer
    Registriert seit
    Jan 2008
    Beiträge
    2.551
    Mit Endianess habe ich mich schon lange rumgeärgert (SUN vs Linux vs Windozen vs etc. pp). Vllt. hilft Dir

    http://de.wikipedia.org/wiki/Byte-Reihenfolge

  6. #6
    Newbie and practicing Avatar von Newbie314
    Registriert seit
    Mar 2007
    Beiträge
    7.639

    Thumbs up Danke!

    .. das hat geholfen.

    Für mich kommt da raus:

    - es gibt keine Norm, jeder macht was für ihn Sinn macht
    - im Gegensatz zu dem was ich dachte können moderne Computer also jedes Byte addressieren, nicht nur Word für Word (und müssten dann die überflüssig eingelesenen Bytes "wegwerfen")

    ... das spricht für die Variante der einen Gruppe, die müsste dann Informatikern die neu dazukommen "eingängiger" sein (daher die Frage).

    Und ja, wir müssen uns einigen da wir ein Projekt gemeinsam auf die Beine stellen und uns sonst über Jahre hinweg mit Missverständnissen rumärgern werden- das Verständnis ist auf beiden Seiten da...

    Programmiersprachen sind übrigens C und Assembler.. also relativ maschinennah.


    Endianness- darüber lachen wir hier nur noch weil der verwendete Computer die eine, die diversen seriellen Schnittstellen die andere Reihenfolge verwenden. Mittlerweile haben wir das intus...
    Bei Konsolenausgaben / Fehlermeldungen bitte immer Code Tags verwenden: [code] -Text- [/code]
    "Überzeugungen sind gefährlichere Feinde der Wahrheit als Lügen" (H. Lesch)

  7. #7
    Benutzter Registrierer
    Registriert seit
    Feb 2004
    Beiträge
    2.281
    Moin,

    Ich wuerde mit Bytes als Einheit arbeiten. In C liefer sizeof() die Ergebnisse in Bytes zurueck. In Assembler kommts halt auf den Prozessor an, ich hab' mal vor 1000 Jahren mit einem TI-Graphikprozessor gearbeitet, der hat die Adresse in bit angegeben, aber das lief drauf raus, dass die letzten paar LSBs der Adresse dann doch nur 0 waren bei "normalen" Speicherzugriffen.
    Wenn man ein FPGA mit externem DRAM hat (das ist dann noch eine Stufe "maschinen"naeher als Assembler) , laeufts auch auf Bytes raus - Die DRAMs haben, auch wenn sie breiter sind, immer WriteByteEnable Leitungen, oder sowas in der Art, z.B. bei 16-Bit DRAMs heissen die dann UDS und LDS (upper/lower data strobe). Das Lesen von Bytes ist nicht das Problem; die Adresszyklen sind da immer gleich. Das Schreiben ist das "bloede", denn dann muss verhindert werden, dass ungewollte Bytes des adressierten 16, 32, oder 64-Bit Worts geschrieben werden. Das geht eben ueber die WriteByteEnable-Leitungen...
    Kurz: Auch wenn keiner eine Norm kennt, wuerd' ich stark zu Bytes als Einheit tendieren. Weils schon immer so war

    Gruss
    WK
    Das ist aber zu viel zum Lesen und ich will, dass er einfach kompeliert!

  8. #8
    Freelancer Avatar von TheDarkRose
    Registriert seit
    Jun 2009
    Ort
    Oberalm
    Beiträge
    669
    Weil ein Byte als 8Bit festgelegt (meist) ist, aber ein Wort immer unterschiedlich ist -> Byte

    Oder um es wie in den RFCs zu machen: Um ausdrücklich auf eine Anzahl von 8 Bit hinzuweisen, wird auch die Bezeichnung Oktett verwendet.
    foo bar

Ähnliche Themen

  1. CD/DVD-Images (iso, bin/cue, ngr, ccd, img, mdf/mds...)
    Von michiS im Forum Hier Suchen und Finden, Links, Tutorials
    Antworten: 0
    Letzter Beitrag: 19.12.07, 17:07
  2. oddcastv2 fehler beim source installation
    Von neofox im Forum Kompilieren von Kernel und Sourcen
    Antworten: 1
    Letzter Beitrag: 25.04.07, 11:15
  3. cinelerra fehler beim kompilieren
    Von serum im Forum Fernsehen
    Antworten: 1
    Letzter Beitrag: 21.01.06, 16:51
  4. x.org unter Debian Sarge - Wie läufts ab?
    Von Fusel Wusel im Forum X-Konfiguration
    Antworten: 21
    Letzter Beitrag: 02.12.04, 06:54
  5. Fehler bei emergy System
    Von Mr.Sailer im Forum System installieren und konfigurieren
    Antworten: 3
    Letzter Beitrag: 14.02.04, 17:03

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •