| Autor |
Nachricht |
|
| lamborgotti |
Verfasst am: 12 Feb 2011 20:22 |
|
|
|
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 |
|
|
| Nach oben |
|
| lamborgotti |
Verfasst am: 13 Feb 2011 11:43 |
|
|
|
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 |
|
|
| Nach oben |
|
| konrada |
Verfasst am: 13 Feb 2011 20:28 |
|
|
|
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);
}
|
|
|
| Nach oben |
|
| lamborgotti |
Verfasst am: 13 Feb 2011 20:54 |
|
|
|
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? |
|
|
| Nach oben |
|
| konrada |
Verfasst am: 14 Feb 2011 10:53 |
|
|
|
Anmeldungsdatum: 19.10.2009
Beiträge: 160
Wohnort: Freiburg
|
Also Beispiel:
geparst ergibt:
Code:
AInstStmt
- AOp2Instruction
-- ALwOpcode2
-- ARegOperand
--- AT1Register
-- AAddrRegOperand
--- AExprAddrImmed
---- AConstExpr
----- TDecimal
--- AT0Register
[/code] |
|
|
| Nach oben |
|
|
|