AARCHMRS Schema 2.7.4

↚ Home

Fields.Array object

Field array is a rolled up representation of an array of fields. Architecturally this should be treated the same as a set of unrolled fields.

object

Properties Type Description
_meta Meta
See Meta for more information.
_type
Enum
Fields.Array
access Traits.HasFieldAccess
See definitions.access in Traits.HasFieldAccess for more information.
Default
null
description Traits.HasDescription
See properties.description in Fields.Field for more information.
display
  • string
  • null
See properties.display in Fields.Field for more information.
index_variable Traits.HasIndexes
See definitions.index_variable in Traits.HasIndexes for more information.
indexes Traits.HasIndexes
See definitions.indexes in Traits.HasIndexes for more information.
name
  • string
  • null

The name must include a <[^<]+> which is used to represent the index value of the field.

For example, unrolling a field named F<x> with indexes 4:2 will yield three fields with the names F4, F3, F2 in that order.

Below are few other examples on how a name property could be defined:

See properties.name in Fields.Field for more information.
Pattern
/<[^<]+>/
Examples
"F<x>"
"Part<x>_Q"
rangeset Rangeset
See properties.rangeset in Fields.Field for more information.
resets FieldResets
See properties.resets in Fields.Field for more information.
values Valuesets.ValuesetAbstract
See properties.values in Fields.Field for more information.
volatile
  • boolean
See properties.volatile in Fields.Field for more information.
Additional Properties
Not Allowed
◊ Required
Properties marked with ◊ are required properties.
Examples
{
    "_type": "Fields.Array", 
    "name": "F<x>", 
    "description": {
        "after": null, 
        "before": "A short way of writing many 2 bit fields: F3 at 7:6, F2 at 5:4, F1 at 3:2 and, F0 at 1:0"
    }, 
    "rangeset": [
        {
            "_type": "Range", 
            "start": 0, 
            "width": 8
        }
    ], 
    "indexes": [
        {
            "_type": "Range", 
            "start": 0, 
            "width": 4
        }
    ], 
    "index_variable": "x", 
    "values": {
        "_type": "Valuesets.Values", 
        "values": [
            {
                "_type": "Values.Value", 
                "meaning": "The first value of every F&lt;x&gt; field", 
                "value": "'01'"
            }, 
            {
                "_type": "Values.Value", 
                "meaning": "The second value of every F&lt;x&gt; field", 
                "value": "'00'"
            }
        ]
    }, 
    "access": [
        {
            "_type": "Accessors.Permission.FieldAccess", 
            "condition": {
                "_type": "AST.BinaryOp", 
                "left": {
                    "_type": "AST.Identifier", 
                    "value": "x"
                }, 
                "op": "<", 
                "right": {
                    "_type": "AST.Function", 
                    "arguments": [
                        {
                            "_type": "Types.Field", 
                            "value": {
                                "field": "CG1NC", 
                                "instance": null, 
                                "name": "AMCGCR_EL0", 
                                "slices": null, 
                                "state": "AArch64"
                            }
                        }
                    ], 
                    "name": "UInt"
                }
            }, 
            "access": "RW"
        }, 
        {
            "_type": "Accessors.Permission.FieldAccess", 
            "condition": {
                "_type": "AST.Bool", 
                "value": true
            }, 
            "access": "RES0"
        }
    ]
}

Schema http://json-schema.org/draft-04/schema#

{
  "info": [
    [
      "Field array is a rolled up representation of an array of fields.",
      "Architecturally this should be treated the same as a set of unrolled fields."
    ]
  ],
  "examples": [
    {
      "_type": "Fields.Array",
      "name": "F",
      "description": {
        "after": null,
        "before": "A short way of writing many 2 bit fields: F3 at 7:6, F2 at 5:4, F1 at 3:2 and, F0 at 1:0"
      },
      "rangeset": [
        {
          "_type": "Range",
          "start": 0,
          "width": 8
        }
      ],
      "indexes": [
        {
          "_type": "Range",
          "start": 0,
          "width": 4
        }
      ],
      "index_variable": "x",
      "values": {
        "_type": "Valuesets.Values",
        "values": [
          {
            "_type": "Values.Value",
            "meaning": "The first value of every F<x> field",
            "value": "'01'"
          },
          {
            "_type": "Values.Value",
            "meaning": "The second value of every F<x> field",
            "value": "'00'"
          }
        ]
      },
      "access": [
        {
          "_type": "Accessors.Permission.FieldAccess",
          "condition": {
            "_type": "AST.BinaryOp",
            "left": {
              "_type": "AST.Identifier",
              "value": "x"
            },
            "op": "<",
            "right": {
              "_type": "AST.Function",
              "arguments": [
                {
                  "_type": "Types.Field",
                  "value": {
                    "field": "CG1NC",
                    "instance": null,
                    "name": "AMCGCR_EL0",
                    "slices": null,
                    "state": "AArch64"
                  }
                }
              ],
              "name": "UInt"
            }
          },
          "access": "RW"
        },
        {
          "_type": "Accessors.Permission.FieldAccess",
          "condition": {
            "_type": "AST.Bool",
            "value": true
          },
          "access": "RES0"
        }
      ]
    }
  ],
  "properties": {
    "_meta": {
      "$ref": "../Meta.json"
    },
    "_type": {
      "enum": [
        "Fields.Array"
      ]
    },
    "access": {
      "default": null,
      "$ref": "../Traits/HasFieldAccess.json#/definitions/access"
    },
    "description": {
      "see": "../Fields/Field.json",
      "$ref": "../Traits/HasDescription.json#/definitions/description"
    },
    "display": {
      "see": "../Fields/Field.json",
      "type": [
        "string",
        "null"
      ]
    },
    "name": {
      "see": "../Fields/Field.json",
      "info": [
        "The name must include a `<[^<]+>` which is used to represent the index value of the field.",
        [
          "For example, unrolling a field named `F` with indexes `4:2`",
          " will yield three fields with the names `F4`, `F3`, `F2` in that order."
        ],
        "Below are few other examples on how a name property could be defined:"
      ],
      "examples": [
        "F",
        "Part_Q"
      ],
      "pattern": "<[^<]+>",
      "type": [
        "string",
        "null"
      ]
    },
    "volatile": {
      "see": "../Fields/Field.json",
      "type": "boolean"
    },
    "rangeset": {
      "see": "../Fields/Field.json",
      "$ref": "../Rangeset.json"
    },
    "resets": {
      "see": "../Fields/Field.json",
      "$ref": "../FieldResets.json"
    },
    "indexes": {
      "$ref": "../Traits/HasIndexes.json#/definitions/indexes"
    },
    "index_variable": {
      "$ref": "../Traits/HasIndexes.json#/definitions/index_variable"
    },
    "values": {
      "$ref": "../Valuesets/ValuesetAbstract.json#/definitions/children",
      "see": "../Fields/Field.json"
    }
  },
  "required": [
    "name",
    "rangeset",
    "indexes",
    "index_variable"
  ],
  "title": "Array",
  "type": "object",
  "$schema": "http://json-schema.org/draft-04/schema#",
  "additionalProperties": false
}