Compare commits

...

2 Commits

Author SHA1 Message Date
1c64abef6b syntax.txt: initial 2024-04-19 21:00:19 +08:00
bb69101282 sh4: fix copy-paste errors 2024-04-19 21:00:02 +08:00
4 changed files with 129 additions and 4 deletions

View File

@ -2,6 +2,6 @@
op1 ← SignExtend32(Rm);
op2 ← SignExtend32(Rn);
op2 ← op2 + op1;
t ← INT ((op2 < (- 231)) OR (op2 ≥ 231));
t ← INT ((op2 < (- (1 << 31))) OR (op2 ≥ (1 << 31)));
Rn ← Register(op2);
T ← Bit(t);

View File

@ -21,9 +21,9 @@ result ← mac + mul;
IF (s = 1)
IF (((result ⊕ mac) ∧ (result ⊕ mul))< 63 FOR 1 > = 1)
IF (mac< 63 FOR 1 > = 0)
result ← 247 - 1;
result ← (1 << 47) - 1;
ELSE
ELSEresult ← - 247;
ELSE result ← - (1 << 47);
result ← SignedSaturate48(result);
macl ← result;
mach ← result >> 32;

View File

@ -2,6 +2,6 @@
op1 ← SignExtend32(Rm);
op2 ← SignExtend32(Rn);
op2 ← op2 - op1;
t ← INT ((op2 < (- 231)) OR (op2 ≥ 231));
t ← INT ((op2 < (- (1 << 31))) OR (op2 ≥ (1 << 31)));
Rn ← Register(op2);
T ← Bit(t);

125
syntax.txt Normal file
View File

@ -0,0 +1,125 @@
identifier:
identifier-start
identifier identifier-continue
identifier-start:
nondigit
identifier-contine:
digit
nondigit
primary-expression:
identifier
constant
string-literal
"(" expression ")"
postfix-expression:
primary-expression
postfix-expression "(" argument-expression-list? ")"
postfix-expression "<" primary-expression "FOR" primary-expression ">"
postfix-expression "<" primary-expression ">"
assignment-expression-list:
assignment-expression
argument-expression-list "," assignment-expression
unary-expression:
postfix-expression
"NOT" unary-expression
"INT" unary-expression
"~" unary-expression # bitwise complement
"-" unary-expression # integer negation
"|" unary-expression "|" # integer absolute value
multiplicative-expression:
unary-expression
multiplicative-expression "×" unary-expression
multiplicative-expression "/" unary-expression
additive-expression:
multiplicative-expression
additive-expression "+" multiplicative-expression
additive-expression "-" multiplicative-expression
shift-expression:
additive-expression
shift-expression "<<" additive-expression
shift-expression ">>" additive-expression
relational-expression:
shift-expression
relational-expression "<" shift-expression
relational-expression ">" shift-expression
relational-expression "≤" shift-expression
relational-expression "≥" shift-expression
equality-expression:
relational-expression
equality-expression "=" relational-expression
equality-expression "≠" relational-expression
bitwise-AND-expression:
equality-expression
bitwise-AND-expression "∧" equality-expression
bitwise-XOR-expression:
bitwise-AND-expression
bitwise-XOR-expression "⊕" bitwise-AND-expression
bitwise-OR-expression:
bitwise-XOR-expression
bitwise-OR-expression "∨" bitwise-XOR-expression
logical-AND-expression:
bitwise-OR-expression
logical-AND-expression "AND" bitwise-OR-expression
logical-XOR-expression:
logical-AND-expression
logical-XOR-expression "XOR" logical-AND-expression
logical-OR-expression:
logical-XOR-expression
logical-OR-expression "OR" logical-XOR-expression
assignment-expression:
logical-OR-expression
identifier "←" assignment-expression
expression:
assignment-expression
# statement
statement:
unlabeled-statement
unlabeled-statement:
expression-statement
primary-block
primary-block:
compound-statement
selection-statement
secondary-block:
statement
compound-statement:
"{" block-item-list? "}"
block-item-list:
block-item
block-item-list block-item
block-item:
unlabeled-statement
expression-statement:
expression ";"
selection-statement:
"IF" "(" expression ")" secondary-block
"IF" "(" expression ")" secondary-block "ELSE" secondary-block