summaryrefslogtreecommitdiff
path: root/src/arch/arm/v7/opdefs/mls_A88101.d
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/arm/v7/opdefs/mls_A88101.d')
-rw-r--r--src/arch/arm/v7/opdefs/mls_A88101.d52
1 files changed, 24 insertions, 28 deletions
diff --git a/src/arch/arm/v7/opdefs/mls_A88101.d b/src/arch/arm/v7/opdefs/mls_A88101.d
index 3d55f00..4d10be8 100644
--- a/src/arch/arm/v7/opdefs/mls_A88101.d
+++ b/src/arch/arm/v7/opdefs/mls_A88101.d
@@ -2,7 +2,7 @@
/* Chrysalide - Outil d'analyse de fichiers binaires
* ##FILE## - traduction d'instructions ARMv7
*
- * Copyright (C) 2014 Cyrille Bagard
+ * Copyright (C) 2015 Cyrille Bagard
*
* This file is part of Chrysalide.
*
@@ -23,49 +23,45 @@
@title MLS
-@encoding(T1) {
+@desc Multiply and Subtract multiplies two register values, and subtracts the product from a third register value. The least significant 32 bits of the result are written to the destination register. These 32 bits do not depend on whether the source register values are considered to be signed values or unsigned values.
- @word 1 1 1 1 1 0 1 1 0 0 0 0 Rn(4) Ra(4) Rd(4) 0 0 0 1 Rm(4)
+@encoding (T1) {
- @syntax <Rd> <Rn> <Rm> <Ra>
+ @word 1 1 1 1 1 0 1 1 0 0 0 0 Rn(4) Ra(4) Rd(4) 0 0 0 1 Rm(4)
- @conv {
+ @syntax <reg_D> <reg_N> <reg_M> <reg_A>
- Rd = Register(Rd)
- Rn = Register(Rn)
- Rm = Register(Rm)
- Ra = Register(Ra)
+ @conv {
- }
+ reg_D = Register(Rd)
+ reg_N = Register(Rn)
+ reg_M = Register(Rm)
+ reg_A = Register(Ra)
- @rules {
-
- //if d IN {13,15} || n IN {13,15} || m IN {13,15} || a IN {13,15} then UNPREDICTABLE
-
- }
+ }
}
-@encoding(A1) {
+@encoding (A1) {
- @word cond(4) 0 0 0 0 0 1 1 0 Rd(4) Ra(4) Rm(4) 1 0 0 1 Rn(4)
+ @word cond(4) 0 0 0 0 0 1 1 0 Rd(4) Ra(4) Rm(4) 1 0 0 1 Rn(4)
- @syntax {c} <Rd> <Rn> <Rm> <Ra>
+ @syntax <reg_D> <reg_N> <reg_M> <reg_A>
- @conv {
+ @conv {
- c = Condition(cond)
- Rd = Register(Rd)
- Rn = Register(Rn)
- Rm = Register(Rm)
- Ra = Register(Ra)
+ reg_D = Register(Rd)
+ reg_N = Register(Rn)
+ reg_M = Register(Rm)
+ reg_A = Register(Ra)
- }
+ }
- @rules {
+ @rules {
- //if d == 15 || n == 15 || m == 15 || a == 15 then UNPREDICTABLE;
+ chk_call StoreCondition(cond)
- }
+ }
}
+