C,C++,C#,Java,



  • Nein, machen die nicht. Das .Net Framework erlaubt solchen Code, die JVM aber nicht. Und sowas kann man schlecht simulieren, willst du die "simulierte" Adresse eines Objekts zurückgeben?



  • Optimizer schrieb:

    willst du die "simulierte" Adresse eines Objekts zurückgeben?

    kommt drauf an. machbar wär das sicherlich. vielleicht könnte man auch echte äääh vm-relative adressen nehmen. wenn der programmierer dann einen fehler macht stürzt es eben ab wie ein ganz normales fehlerhaftes java-programm. das könnte man bestimmt hinkriegen. vielleicht baut mal einer mit dem lcc einen c-compiler für java 😋



  • net schrieb:

    vielleicht baut mal einer mit dem lcc einen c-compiler für java 😋

    und wie soll man damit sinnvoll die Java Plattform nutzen?



  • Shade Of Mine schrieb:

    und wie soll man damit sinnvoll die Java Plattform nutzen?

    ob das sinnvoll ist, ist eine ganz andere frage, hehe, aber als spassprojekt wär's doch was: endlich keine bösartigen buffer overflows in c unc c++ programmen mehr



  • Optimizer schrieb:

    Nein, machen die nicht. Das .Net Framework erlaubt solchen Code, die JVM aber nicht. Und sowas kann man schlecht simulieren, willst du die "simulierte" Adresse eines Objekts zurückgeben?

    warum simuliert? reinterpret_cast von irgendwas nach zeiger lassen wir der einfachheit 0 werden. so zur sicherheit.
    und sonst sind zeiger das, was in java in der vm soezifikation reference genannt wird.
    http://java.sun.com/docs/books/vmspec/2nd-edition/html/Overview.doc.html#37906
    ich seh da jetzt keinen dringenden bedarf, anzunehmen, es sei unmöglich, c++ nach java-vm zu compilieren.



  • Hmmmmm die ganze Pointerarithmetik stell ich mir relativ unmöglich vor. Stell dir vor, du merkst dir die Adresse von etwas und der GC verschiebt das Objekt dann. Die JVM hat keinen unmanaged Heap, du kannst nicht Objekte von der GC ausschließen. Das .Net Framework hat sowohl nen verwalteten als auch nen klassischen Heap.

    Die ganze Adressrechnerei müsste aus diesem "C++" IMHO raus, oder hast du da ne konkrete Idee?



  • Wir können's ja noch einfacher machen: Nimm die Adresse von etwas und speicher sie in nem int. Sobald der GC das Objekt entfernt hat, versuch wieder, über die Adresse, darauf zuzugreifen...
    IMHO hat das schon ein paar handfeste Gründe, dass es in C++/CLI so "Referenzen" wie in C# und Java gibt. Mit normalen Pointern kommst du da nicht hin. Die Repräsentation von ner Referenz ist intern auch anders (nämlich Pointer auf Pointer, damit der GC leichter verschieben kann).



  • Optimizer schrieb:

    Hmmmmm die ganze Pointerarithmetik stell ich mir relativ unmöglich vor.

    die ist in c++ auch nur definiert in bereichen, die auf einmal allokiert wurden.
    edit: es geht nicht darum, C abzubilden. das klappt nicht. C++ ist Java näher als C.



  • volkard schrieb:

    es geht nicht darum, C abzubilden. das klappt nicht.

    ich glaube schon dass das klappt. denk mal an c-interpreter. die laufen auch in einer 'virtuellen umgebung'.



  • net schrieb:

    ich glaube schon dass das klappt. denk mal an c-interpreter. die laufen auch in einer 'virtuellen umgebung'.

    aber die koennen sich die umgebung selber definieren. die javavm ist vorgegeben und tut sich mit pointer arithmektik wegen dem gc ordentlich schwer.



  • @volkard: Danke.

    So und zur Übung:

    Syntax
    Syntax
    Syntax
    Syntax
    Syntax
    Syntax
    Syntax
    Syntax
    Syntax
    Syntax

    Irgendwann muss das doch mal in die Finge übergehen.



  • Helium schrieb:

    Finge

    😃 😃


Anmelden zum Antworten