Sie sind nicht angemeldet.

1

Montag, 6. Mai 2019, 16:43

Assembler Schreib- und Sprechweise

In der ESP-Doku gibt es ein paar Schreib- und Sprechweisen, die mich etwas verunsichern.

Wenn eine Methode aufgerufen wird, dann werden u.a. die Register ds und si automatisch wie folgt gesetzt:
ds This register contains the segment address of the recipient’s object block.
si This contains the chunk handle of the object. (Together, ds:si constitute the optr of the recipient object.)
Hier wird von der Segmentadresse in ds gesprochen, nicht vom Global Handle. Was ist wirklich gemeint?

bx This is the offset to the beginning of the instance chunk; that is, ds:[bx] is a pointer to the instance chunk. (Thus, bx is the
same as the value pointed to by ds:[si], and *ds:[si] = ds[bx].
Die Erläuterung für bx ist insofern irritierend, als die Schreibweise ds[bx] keinen Sinn ergibt. Oder fehlt hier einfach nur der Doppelpunkt?

Bei der Parameterübergabe beim Aufruf einer Methode wird oft angegeben: *ds:si - instance data
Was bedeutet hier das Sternchen? Ist hier der optr des Empfängerobjekts gemeint?

2

Montag, 6. Mai 2019, 17:12

Ich hab viel zu wenig mit Asssembler gemacht um dir eine definitive Antwort geben zu können. Frag doch einfach swat. z.b.

Quellcode

1
 phan ds


Dann sagt er dir ob es ein gültiges Handle ist und was es enthält.
Das Sternchen würde ich jetzt so interpretieren wie ein Sternchen ist C: eine Pointer-Auflösung. aber wie gesagt, schau die alle Werte in den Registern an und schau dann, wie sie zusammenpassen.

Ich könnte mir Vorstellen (!), dass swat bei *ds:si durchaus erkenn das ein optr gemeint ist und kein far pointer, so dass er es "richtig interpretiert".

Hast du in ESP ein pself? Das ist ganz sicher ein far pointer. Hast du ein oself? Das ist sicher ein optr.



Quellcode

1
2
p oself
p pself
Bei mir (allerdings C Code) ist SI das handle. Siehe Bild.
Gruß
Rainer
»Rainer« hat folgende Datei angehängt:
  • Register.JPG (45,78 kB - 55 mal heruntergeladen - zuletzt: Heute, 07:55)
Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

3

Dienstag, 7. Mai 2019, 12:00

pself und oself undefined.
ds und si keine gültigen Handles.
p *ds:si wird von Swat akzeptiert, aber ich kann das Ergebnis (noch) nicht einordnen.
p [ds] listet den Inhalt des aktuellen Segments auf. Mal sehen, ob ich da durchsteige.

Danke Rainer

4

Dienstag, 7. Mai 2019, 18:05

Arbeitshypothese: Na wenn es keine Handles sind, dann sind es (Teile von) far pointer(n). Dann vergiss den Teil der Doku, der von optr redet. Dokus können auch mal falsch sein.
In GOC geht sowas:

Quellcode

1
RBasDocumentInstance *pself = ObjDerefGen(oself);

Du müsstest also für die Klasse MyRulerClass einen Pointer auf die Instancevariablen mit

Quellcode

1
MyRulerInstance pself;

definieren können. In C geht das genau so. Wenn du das in ESP hinbekommt könnte da ESP Analogon zu



Quellcode

1
2
3
pself = ds:si
oder vielleicht
pself = *ds:si
einen Poiner auf die InstcneVariablen liefern, die du dann mit

Quellcode

1
p *pself

ausprinten kannst?
Wie gesagt, das sind die Dinge, die ich ausprobieren würde.
Gruß
Rainer
Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

5

Samstag, 11. Mai 2019, 12:07

Hallo Rainer,

während ich über deine Vorschläge nachdachte, wollte ich mir zunächst ein klareres Bild der Rollen von ds und di bei der Objektadressierung machen. Dazu stellte ich mir die beiden Darstellungen aus ESP.PDF, S.75, und CONCEPTS.PDF, S.160, nebeneinander auf den Schirm.
Die Darstellung in CONCEPTS.PDF, S. 160, zeigt in klarer Weise, wie mit dem optr das Objekt adressiert wird. Das handle zeigt ja eigentlich nicht direkt auf den Beginn des Objektblocks, aber im Text daneben wird ja geklärt, dass das global handle erst referenziert werden muss. Das chunk handle zeigt in die chunk handle table, wo die relative Adresse zum Objektchunk steht.

Die Darstellung in ESP.PDF, S.75, zeigt prinzipiell den gleichen Sachverhalt (innerhalb des Objekts ausführlicher), hier mit der Besetzung der Register. In ds steht offenbar schon die Segmentadresse (Global Handle schon referenziert).
Si zeigt in dieser Darstellung schon auf den Beginn des Objektbereichs, enthält also die relative Adresse des Objekts im Block bzw. den Offset zum Objekt. Nach meinem bisherigen Verständnis müsste si aber in die chunk handle table zeigen und [si] den Offset enthalten. Die Herausvergrößerung des Objekts zeigt zunächst wieder ds:si als Beginn des Objektbereichs. Bei den weiteren Angaben innerhalb des Objekts wird aber plötzlich ds:[si] als Bezugsadresse benutzt, Liegt hier einfach nur ein Schreibfehler vor, d.h. am Beginn des Objekts nicht auch ds:[si] stehen? Die darunter stehende Erläuterung legt diese Vermutung nahe: In this example, we assume that ds points to the beginning of the object block, and ds:[si] is the beginning of the instance chunk.

Wilfried

P.S.: Hattet ihr auch Probleme mit den Aufgaben im Mathematik-Abitur?

6

Sonntag, 12. Mai 2019, 15:08

P.S.: Hattet ihr auch Probleme mit den Aufgaben im Mathematik-Abitur?

Ich sehe es so, dass es eher Probleme mit dem Leistungswillen einiger Abiturienten gibt statt mit den Aufgaben selbst. Wenn mehr Leute die Petition unterzeichnen, als Abi geschrieben haben, sagt das eigentlich alles.
Zum Rest: siehe PM.
Rainer
Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

7

Sonntag, 12. Mai 2019, 19:10

Aus nicht nur meiner Erfahrung heraus kann man wohl sagen, dass Mathematik von den meisten Schülern als schweres Fach (weil nicht einfach anlesbar) eingestuft wird. Auch einen Teil der LK-Schüler muss man wohl dazu rechnen :( .

Wilfried

8

Sonntag, 12. Mai 2019, 22:24

P.S.: Bei uns herrscht noch Mathe LK Hoffnung bezüglich des Ergebnis, im Vergleich ist die Physik LK Hoffnung etwas getrübter. Petition ist nicht im Spiel.

9

Sonntag, 26. Mai 2019, 11:37

Die Wahrheit über die Mathe-Abiturprüfung: https://youtu.be/Zh3Yz3PiXZw
d[ 0_O ]b

10

Sonntag, 26. Mai 2019, 12:37

Die Wahrheit über die Mathe-Abiturprüfung: https://youtu.be/Zh3Yz3PiXZw
Klasse Video Jörg, da bleibt einem das Lachen im Halse stecken. Auch wenn die Thematik eine etwas andere ist und an der ursprünglichen Kritik der Abi-Prüfung vielleicht was dran ist.
Bernd

11

Sonntag, 26. Mai 2019, 21:03

Geiles Video! Ob Trump das versteht?
Aber letztlich war die Frau wirklich nicht clever. Ich hätte am Ende 20002000 Dollar rausbekommen :D

Rainer
Nachtrag: Das Kritik am Mathe Abi zeigt genau zwei Dinge:
1. Man kann nicht nach verschiedenen Plänen unterrichten und dann die gleichen Prüfungsfragen stellen.
2. Man muss sich anstrengen um eine allgemeine Hochschulreife bescheinigt zu bekommen. Und um den Bezug zum Video herzustellen: dazu müss(t)en einem die Eltern gelegentlich auch mal in den Allerwertesten treten.
Es gibt 10 Arten von Menschen - die einen wissen was binär ist, die anderen nicht.

Thema bewerten