Address space overflow, wegen arrays

Gast #1607609
Lesenswert?

Hallo,

Ich programmiere mit Keil µVision 3. Mein Programm enthält ein paar 
arrays, bzw ich kann nur ein array machen, weil sonst kommt Address 
space overflow, wegen den data size limit denk ich, da sich die größe 
vom code nicht ändert.
Program Size: data=142.1 xdata=0 code=4075

Bei: Program Size: data=109.1 xdata=0 code=4075 funktioniert das 
compelieren noch.

Ich will ein paar arrays machen die etwa so aussehen:

int hex[13]= 
{0x85,0x110,0x134,0x183,0x232,0x287,0x342,0x440,0x537,0x702,0x866,0xc26} 
;

int hex2[13]= 
{0x84,0x106,0x128,0x168,0x207,0x256,0x305,0x415,0x525,0x689,0x854,0xb89;

Brauchen arrays echt so viel platz? Für was sind sie dann gut....

Anscheinend hab ich gehört das es am Keil µVision liegt und man das 
durch library umschreiben umgehen kann, aber wie das geht weis ich 
leider nicht.

mfg
Gast #1607622
Lesenswert?

>Brauchen arrays echt so viel platz?

Mit dieser Angabe:
>>int hex[13]

Kannst du selbst ermitteln, wieviel Platz das Array braucht.

Tip:
Dreizahlen Int-zahlen als Array brauchen ungefähr genausoviel Platz 
wie dreizehn Int-Zahlen nicht als Array.


Übrigens: Deine Array sind zwölf Elemente lang.
Moderator (Firma: Titel) Persönliche Seite #1607624
Lesenswert?

> int hex[13]
Jedes der Arrays braucht 4*13 Bytes, jeweils 52 Bytes. Insgesamt also 
hex[]+hex2[] = 104 Bytes. Initialisierte Arrays wie du sie hast brauchen 
den Speicherplatz im RAM und im ROM (Programmspeicher).

> Brauchen arrays echt so viel platz? Für was sind sie dann gut....
Seltsame Frage... :-o
Auch auf eine andere Art wirst du nicht weniger Speicherplatz brauchen.

EDIT:
> Übrigens: Deine Array sind zwölf Elemente lang.
Und brauchen trotzdem Platz für 13 Elemente, weil sie so ([13]) 
deklariert sind.
Gast #1607850
Lesenswert?

Die Antworten sind ja echt hilfreich!

Ich kann jetzt zwar nichts mit µVision anfangen und weiß auch nicht um 
welchen Controller es sich handelt, aber ich gehe mal davon aus, dass es 
auch in dieser Kombination möglich sein sollte das Array nicht im RAM, 
sondern im code-segment anzulegen. Hoffe mal das hilft eher ein wenig 
weiter.
Gast #1607955
Lesenswert?

Also so wie es aussieht hats du ein 8051 Derivate.

Was willst du mit dem array eigentlich tun - nur lesen oder zur Laufzeit 
modifizieren?

Ist es nur lesen? -> dann leg es in den CODE als const
Hat dein Derivate XDATA? -> dann leg es dorthin

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren