🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: de.comp.lang.c++
2 messages
2 total messages Started by Olaf Krzikalla Sun, 17 Sep 1995 11:16
Optimieren mit WATCOM C++ 10.0
#410
Author: Olaf Krzikalla
Date: Sun, 17 Sep 1995 11:16
27 lines
1360 bytes
Hi Leute,

ich habe eine Klassenfunktion 

void a::b() {
	viele arithmetische Anweisungen mit Daten aus a
}

Aufgerufen wird die Sache immer mit a->b.
Der Compiler erzeugt dann Code, wobei er aber vor jede Anweisung die Adresse
von a neu in eax laedt, dann aber natuerlich mit eax weiterrechnet (und sonst
eigentlich keine Register braucht). Da das ganze aber oft durchlaufener 
Bestandteil eines Interrupts ist, ist Geschwindigkeit angebracht. Wie kann ich
dem Compiler sagen, dass er gefälligst den Ptr auf a in einem Register zu halten
hat (es sind ja noch ebx...edx frei). Als ich in C mit einer Zeigerübergabe
gearbeitet habe, sahs so aus:

void b (a *var) {
	register a *new = var
	alles mit new
}

funktionierte aber auch nicht.
Muss ich wirklich alles in Assembler umschreiben ???

Ciao Olaf
Re: Optimieren mit WATCOM C++ 10.0
#416
Author: Ullrich von Bassewitz
Date: Sun, 17 Sep 1995 19:51
28 lines
1442 bytes
Olaf Krzikalla (ok4@irz.inf.tu-dresden.de) wrote:
> Der Compiler erzeugt dann Code, wobei er aber vor jede Anweisung die Adresse
> von a neu in eax laedt, dann aber natuerlich mit eax weiterrechnet (und sonst
> eigentlich keine Register braucht). Da das ganze aber oft durchlaufener 
> Bestandteil eines Interrupts ist, ist Geschwindigkeit angebracht. Wie kann ich
> dem Compiler sagen, dass er gefälligst den Ptr auf a in einem Register zu halten
> hat (es sind ja noch ebx...edx frei).

Normalerweise ist der Compiler dazu sehr wohl in der Lage.

  1. Optimierung einschalten (-oneatx)

  2. Debugging ausschalten bzw. auf Stufe 1 setzen. Der Compiler erzeugt
     entgegen den Behauptungen im Handbuch immer nicht oder nur wenig
     optimierten Code, wenn -d2 oder -d3 angegeben ist.

D.h. auf der Kommandozeile sollte "-d1 -oneatx" o. ae. stehen.

Ueblicher Fallstrick ist normalerweise 2.

Gruss


        Uz


-- 
Ullrich von Bassewitz                              uz@ibb.schwaben.com
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads