1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Mmix

Dieses Thema im Forum "Unix & Terminal" wurde erstellt von Juuro, 07.05.06.

  1. Juuro

    Juuro Schafnase

    Dabei seit:
    07.11.05
    Beiträge:
    2.255
    Kennt hier jemand den virtuellen Prozessor MMIX von Donald Knuth?
    Das benutzen wir im zweiten Semester in Informatik um Assembler zu lernen. Ich hab mir hier die Mac OS X Binaries runtergeladen. ich kann die auch ausführen, aber wo und wie ich dann den MMIX-Code ausführen kann, so dass es dann funktioniert, hab ich noch cniht rausgefunden.
    Weiß da jemand mehr?
     
  2. Bölzebub

    Bölzebub Querina

    Dabei seit:
    27.05.05
    Beiträge:
    180
    Soweit ich weiß ist "mmixal" der Assembler und "mmix" der Interpreter. Im Zweifelsfall also deinen Assembler-Code mit "mmixal" übersetzen und die entstandene Datei dann mit "mmix" ausführen.
     
  3. Juuro

    Juuro Schafnase

    Dabei seit:
    07.11.05
    Beiträge:
    2.255
    danke für die Antwort.

    Hmm, dann sollte das ja eigentlich so funktionieren:
    [​IMG]
    Tut es aber leider nicht. und das, obwohl ich die dre Binaries im selben ordner wie hello_world.mms habe. o_O
     
  4. Bölzebub

    Bölzebub Querina

    Dabei seit:
    27.05.05
    Beiträge:
    180
    OS X ist ein Unix und kein M$-DOS. "./" für Programme im aktuellen Ordner. Also "./mmixal helloworld.mms".

    Oder mmixal und mmix nach /usr/bin kopieren. Dann klappts auch ohne "./".
     
    Juuro gefällt das.
  5. Juuro

    Juuro Schafnase

    Dabei seit:
    07.11.05
    Beiträge:
    2.255
    Juhuu!! Daran lags! Vielen Dank!

    Eine frage hab ich trotzdem noch, wie bewege ich mmixal und mmix nach /unr/bin? Denn der usr ordner ist ja standardmäßig versteckt. In den Darstellungsoptionen des fidners hab ich keine Einstellung gefunden, mit der ich versteckte Objekte sichtbar machen kann.
     
  6. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Bewegen im Terminal mit dem "mv"-Befehl. Nach /usr/bin solltest Du die Software aber an sich nicht kopieren. Besser wäre /usr/local/bin, der Ordner ist für nachinstallierte Software bestimmt.
     
  7. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    1. Der Vergleich is Blödsinn
    2. Das mit /usr/bin ist Humbug.

    zu 1) In Unix - genau wie in MS-DOS gibt es eine Umgebungsvariable "PATH". Wenn darin "." auftaucht (also z.B. ".:/usr/bin", dann werden auch Programm im aktuellen Verzeichnis ausgeführt.

    zu 2) Wenn Du das Programm in irgendeins der Verzeichnisse kopierst, die in "PATH" aufgeführt sind, klappt es unter Umständen auch ohne ./. "Unter Umständen"? Ja! Denn was ist, wenn das Programm weitere Dateien benötigt, die im selben Verzeichnis liegen. Besser also: Kopiere die Programme und alles was dazu gehört in ein eigenes Verzeichnis und nimm das in die PATH Variable auf.
     
  8. Juuro

    Juuro Schafnase

    Dabei seit:
    07.11.05
    Beiträge:
    2.255
    Äh danke, und wo soll ich diese PATH variable dann ändern? :oops:
     
  9. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Hängt prinzipiell von Deiner shell ab. Wenn es der Standard ist, kannst Du das z.B. in die Datei ~/.profile einbauen.

    Mal ein Beispiel:
    Sei Dein Verzeichnis, in dem Du das Programm hast ~/mmix
    Dann kannst Du mit folgendem die Datei zum PATH hinzufügen:
    Code:
    #!/bin/sh
    PATH=~/mmix:$PATH
    export PATH
    
    Oder, wenn Du es "komfortabler" möchtest
    Code:
    #!/bin/sh
    addpath () {
            P=$1
            shift
            while [ -n "$1" ]
            do      case :$P: in
                    *:$1:*) ;;
                    *) P=$P:$1 ;;
                    esac
                    shift
            done
            echo $P
    }
    
    PATH=`addpath $PATH $HOME/mmix`
    export PATH
    
    "komfortabler" meint hier: Wenn Du mehr als einen Pfad irgendwann hinzufügen möchtest, dann ist so eine Lösung meines Erachtens praktisch, weil sie nur solche Verzeichnisse hinzufügt, die nicht schon im Pfad stehen.
     
  10. quarx

    quarx Hadelner Sommerprinz

    Dabei seit:
    17.04.05
    Beiträge:
    8.541
    Die zweite Lösung ist ziemlich krass... :-D
    Wenn ich das richtig sehe, hat das nur einen Haken: Wie stellst Du sicher, dass der hinzugefügte Pfad am Ende vorne in PATH steht? Manchmal braucht man das ja, wenn man z.B. ein bestimmtes Programm (etwa einen selbstgebauten Compiler) aus einem ganz bestimmten Verzeichnis heraus ausführen will und nicht aus dem erstbesten.
     
  11. Skeeve

    Skeeve Pomme d'or

    Dabei seit:
    26.10.05
    Beiträge:
    3.121
    Das siehst Du richtig. Das geht so nicht. Ich hatte schon mal eine komplexere Variante. Da hast Du dann den Teilen, die nach vorne sollten, ein '+' voran gestellt. Da ich das aber nie verwendet habe, ist das irgendwann wieder untergegangen.

    Einfacher ist es aber, sich eine Funktion "leftpath" zu bauen:
    Code:
    leftpath () {
            P=$1
            shift
            while [ -n "$1" ]
            do      case :$P: in
                    *:$1:*) ;;
                    *) P=$1:$P ;;
                    esac
                    shift
            done
            echo $P
    }
    
    Die würde die neuen Teile in umgekehrter Reihenfolge vorne anhängen.

    Oder frontpath:
    Code:
    frontpath () {
            P=$1
            F=''
            shift
            while [ -n "$1" ]
            do      case :$F$P: in
                    *:$1:*) ;;
                    *) F= $F$1: ;;
                    esac
                    shift
            done
            echo $F$P
    }
    
    Die sollte (nihct getestet) es in richtiger Reihenfolge vorne "anflanschen".
     

Diese Seite empfehlen