je Sprungmarken

16/11/2008 - 14:20 von Jens Kallup | Report spam
Hallo NG,

inzwischen wàchst nicht nur mein Compiler an Größe an, sondern auch der
AssemblerCode
der dieser erzeugt (schàtze mal zur Zeit an die 2 Tausend Zeilen und
aufwàrts ...
dann traten natürlich Probleme auf, die ich nur aus Zufall gelöst habe.
Und zwar:
ein JE Sprung kann doch nur 128 nach und 128 vor (Schritte) abarbeiten.
Bei nasm muss man (wenn die magische Grenze überschritten wird) ein "near"
dazu geben.
Also: JE NEAR .Sprungmarke.

Nun zur Frage: kann es zu noch nicht gesichteten Problemen kommen?
Assembler wechseln?

Ansonsten könnt Ihr Euch ja mal den Compiler anschauen:
http://kallup.part-time-scientists.com

Gruß
Jens
 

Lesen sie die antworten

#1 Jan Seiffert
17/11/2008 - 18:47 | Warnen spam
Jens Kallup wrote:
Hallo NG,

inzwischen wàchst nicht nur mein Compiler an Größe an, sondern auch der
AssemblerCode
der dieser erzeugt (schàtze mal zur Zeit an die 2 Tausend Zeilen und
aufwàrts ...
dann traten natürlich Probleme auf, die ich nur aus Zufall gelöst habe.
Und zwar:
ein JE Sprung kann doch nur 128 nach und 128 vor (Schritte) abarbeiten.
Bei nasm muss man (wenn die magische Grenze überschritten wird) ein "near"
dazu geben.
Also: JE NEAR .Sprungmarke.



Ist es nicht eher das man das near weglassen muss?

Nun zur Frage: kann es zu noch nicht gesichteten Problemen kommen?



Klar: Bei 16 Bit offset ist die naechste Grenze und wenn du irgendwann ganz
"durchdrehst" bei 32 Bit wieder (Achtung! Mit Vorzeichen, also 32k & 2Gb)

Andere Grenzen an anderen Befehlen nicht zu vergessen. (Was hatte ich noch mal
ueber die contraints eines Befehles erzaehlt?)

Assembler wechseln?



Kommt drauf an.
Fuer Leute die gerne alles unter Kontrolle haben wollen (oder der Compiler
irgendwas tolles mit der Info macht und das richtig auf die Reihe bekommt) ist
es ein Frevel das sich der Assembler dort einmischt.
Andrerseits kann der Assambler das auch schon ganz gut von alleine wissen, was
er da machen muss. Nebenbei ist es nicht Aufgabe des Compilers, zu wissen wie
gross die Befehle sind...

Du kannst ja mal die NEAR und SHORT usw. weglassen und nasm ein "-O1" mitgeben,
dann murmelt er sich die Offsetgroesse selber aus, fuer einfach "Anwendungscode"
sollte das I.O. sein.

Ansonsten könnt Ihr Euch ja mal den Compiler anschauen:
http://kallup.part-time-scientists.com

Gruß
Jens



Gruss
Jan

char c = *(bit1*8 + bit2*4 + bit3*2 + bit4 + "0123456789ABCDEF")
Es gibt Tage, da muss man C moegen

Ähnliche fragen