Arbeitsbereich Programmiersprachen Foren-Übersicht
Autor Nachricht

<  Archiv WS 2010/2011  ~  Fragen zur mips-grammatik

lamborgotti
Verfasst am: 12 Feb 2011 20:22 Antworten mit Zitat
Anmeldungsdatum: 21.10.2010 Beiträge: 81
hallo

der link geht nicht:
http://spimsimulator.sourceforge.net/HP_AppA.pdf
hab ich den falsch geschrieben oder ist der wirklich kaputt?

Die beschreibung von
http://ti.itec.uka.de/TI-2/Spim/Spim_Tutorial.pdf
ist mehr oder weniger unbrauchbar für mich, weil er nicht erklärt, wie die grammatik aufgebaut ist die wir haben und ansonsten ist es ja irgendwie ein programmier tutorial, das ich mir nicht komplett durchlesen will, weil ich incht mit spim programmieren will

Speziell verstehe ich einfach folgendes nicht an spim:
Code:

   label =    
            {id}  identifier_colon
   | {dec} decimal_colon ;

operand =    
            {reg} register
   | {addr} addr_immed
          | {addr_reg} addr_immed register
          ;


   addr_immed =    
            {lab}  label_expr
          | {plus} label_expr expr
          | {min}  label_expr expr
   | {expr} expr
          ;

 label_expr =
            {ref} identifier
          | {min} [lref1]:identifier [lref2]:identifier  ;

was machen diese produktionen

also ich vertehe das labelsystem nicht und finde nicht über die gelabele in dem tutorial

kann mir das jemand vlt erklären?


Code:

 data_expr =
            {expr} expr
          | {expr_colon} [expr1]:expr [expr2]:expr
          ;

ich weiss auhc nicht, was ich mit dem data zeugs machen soll

mit freundlichen Grüßen
Jan
Benutzer-Profile anzeigen Private Nachricht senden
lamborgotti
Verfasst am: 13 Feb 2011 11:43 Antworten mit Zitat
Anmeldungsdatum: 21.10.2010 Beiträge: 81
Also es muss mir unbedingt jemand sagen, was das ganze zeug in der grammatik bedeutet
ich komme nicht weiter
was bedeuted "addr_immed" ?
die ganze struktur macht überhaupt keinen sinn
wie geb ich ein integer ein?
ist das decimal?
was ist colon?
bzw decimal_colon
und wozu gibt da beides?
warum gibts dann noch label expression?
was ist label_expr expr?
was kann man damit machen?
ich verstehe überhaupt nur bahnhof
hier hätte echt eine beschreibung der grammatik hingemusst, wie auf den blättern 2 bis 5 auch
Benutzer-Profile anzeigen Private Nachricht senden
konrada
Verfasst am: 13 Feb 2011 20:28 Antworten mit Zitat
Anmeldungsdatum: 19.10.2009 Beiträge: 160 Wohnort: Freiburg
Wenn Dir die Grammatik zu kompliziert ist, kannst Du auch Text generieren. MIPS-Programme bestehen ja aus einer Folge von Statements, so dass auch kurze Schnipsel von ein-zwei Befehlen schon gueltige MIPS-Programme sind.



Code:
mips.parser.Parser p = new Parser(
            new Lexer(
                  new PushbackReader(
                        new StringReader(src), 100)));
      Start ast;
      try {
         ast = p.parse();
         mips.node.AProgram prog = (AProgram) ast.getPProgram();
         emittedStmts.addAll(prog.getStmt());
      } catch (Exception e) {
         throw new AssertionError("MIPS syntax error in template: "
               +e+" Template was: "+src);
      }
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
lamborgotti
Verfasst am: 13 Feb 2011 20:54 Antworten mit Zitat
Anmeldungsdatum: 21.10.2010 Beiträge: 81
ich würde schon lieber das mit der grammatik machen

aber was ist zB mit dem zweiten Link?
Ist der wirklich doof?

wie kann ich denn das
Code:

     sw $t1,  -12($fp)
         lw $s4,  -16($fp)

zum beispiel in mips grammtik umsetzten?
das wäre schon sehr hilfreich
und sagen, was die abkürzungen heissen:
immed
colon
decimal
und wie ich einen integer als operanden kriegen kann
also ein operand kann ja sein {reg}, {addr} oder {addr_reg}
und ein addr_immend kann eine label_expr oder mit noch einer expressino sein aber was ist ein label? ist das einfach ein integer?
identifier ist immer ein ... label?
Benutzer-Profile anzeigen Private Nachricht senden
konrada
Verfasst am: 14 Feb 2011 10:53 Antworten mit Zitat
Anmeldungsdatum: 19.10.2009 Beiträge: 160 Wohnort: Freiburg
Also Beispiel:
Code:

lw $t1, 0($t0)

geparst ergibt:
Code:

AInstStmt
- AOp2Instruction
-- ALwOpcode2
-- ARegOperand
--- AT1Register
-- AAddrRegOperand
--- AExprAddrImmed
---- AConstExpr
----- TDecimal
--- AT0Register
[/code]
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen

Beiträge vom vorherigen Thema anzeigen:  

Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1
Dieses Forum ist gesperrt, du kannst keine Beiträge editieren, schreiben oder beantworten.

Gehe zu:  

Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.