son paar generelle fragen... leicht zu beantworten
-
was bedeutet das FAR in der Deklaration:
u_long FAR arg = 1;
?
was bedeuteten die beiden unterstriche vor dieser Assembler Subroutine :
__ASM__{xxx...}
?
und was bedeuten 2 Sterne hinter einer Variablen ? Zeiger auf einen Zeiger ? Wenn ja, warum sind die nicht vor der Variable ?
-
FAR bedeutet nur, dass der Zeiger, über den gesprungen werden muss 4 Byte groß ist, wodurch man mehr als nur ein Segment zum Programmieren, bzw. Springen benutzen kann.
Die Underlines sind normalerweise nötig, wenn C auf die Routinen zugreifen soll. der Compiler setzt das intern so um, dass Funktionsnamen mit _ anfangen. Aber ob das was damit zu tun hat? ich weiß es nicht.
hmm in welcher Programmiersprache hast du die 2 Sterne gesehen??
beim COBOL und einigen anderen heißt das nämlich POW 2, also quadrieren.
-
Also er hat es wohl in C gesehen...
TYP ** ZeigerAufTypArray; // Achtung der hier gezeigt Zeiger ist noch ein Wild-Pointer!
Das bedeutet Zeiger auf einen Zeiger, und wird in C z.B. für zweidimensionale Arrays benützt:
Zeiger zeigt auf ein Array, welches wieder lauter Zeiger auf Arrays enthält:
Zeiger -> [ 0 ] -> [ 0 ] [ 1 ] [ 2 ] [ 1 ] ... [ 2 ] ...
Einen Potenzoperator gibt es unter C/C++ nicht.
MfG SideWinder
-
thanx,
und die zwei __unterstriche__ ? was machen die ? Ist das eine Statische Funktion, also nach dem Compilen ein Binärcode, der sich nicht verändert, den man einfach in den Prozessor "schiessen" kann ?
-
FAR bedeutet nur, dass der Zeiger, über den gesprungen werden muss 4 Byte groß ist, wodurch man mehr als nur ein Segment zum Programmieren, bzw. Springen benutzen kann.
kannst du das evt. nochmal näher erklären ? Du meinst mit segment ein Speicher Segment ? Warum soll über einen Zeiger gesprungen werden ? warumm ist ein Zeiger im Arbeitspeicher der garnicht benutzt wird ? Und wenn halt ein Zeiger im Arbeitsspeicher ist, den man nicht braucht, warum wird nicht einfach ein andere Segment in den CPU Register geladen, man kann die Segmente doch adressieren, und der Prozessor kann selber entscheinen was in ihn rein und raus geht. Das ist das was ich mir zum prozessor denke, deswegen verstehe ich den Sinn so einer Funktion nicht ganz.
-
Die alten Rechner (8086) hatten intern einen Adressraum, der 16 Bit betrug. durch einige kleine tricks konnte man nach außen hin mehr benutzen.
trotzdem. 16 Bit sind das, was man direkt ansprechen konnte. Man nenn diesen Bereich Segment. Der Speicher eines Rechners ist in solche Segmente (16 Bit sind übrigens dann 64KbB adressierbarer Speicher) unterteilt. Ein normaler Funktionsaufruf in einer .com-Datei ist also auch nur ein Sprung in einen Adressbereich innerhalb dieser 16 bit, was bedeutet, dass die Adresse in 2 Bytes stehen kann. heutige rechner haben 32, bzw. einige 64 bit Adressraum und können dementsprechend mehr Speicher adressieren. die Adresse bei 32 Bit - rechnern liegt dann über 4 Bytes verteilt. Das ist dann ein FAR-Call.Ich hoffe, ich hab's nicht zu verwirrend erklärt. IMHO ist der FAR-Call inzwischen bei sämtlichen Compilern standard..
-
Wegen den beiden Unterstrichen, in C++ sind das sozusagen Konstanten die beim Compilieren (!), ersetzt werden, da gibts z.B. __DATE__ und __FILE__ - oder meinst du was anderes?
MfG SideWinder
-
ich meinte die unterstriche vor einer Assembleranweisung... s.o.
ich weiß das es die Anweisung auch ohne striche giebt.