Program to create a Register Array

Below is the Implementation of Register arrays :

C++




#include <iostream>
using namespace std;
 
class Register {
private:
    int size;
    int *registers; // Pointer to an array of registers
 
public:
    // Constructor to initialize registers with 0
    Register(int size) {
        this->size = size;
        this->registers = new int[size]; // Dynamically allocate memory for registers array
        // Initialize all registers with 0
        for (int i = 0; i < size; ++i) {
            registers[i] = 0;
        }
    }
 
    // Destructor to deallocate memory
    ~Register() {
        delete[] registers;
    }
 
    // Method to read a register at a given address
    int readRegister(int address) {
        if (address >= 0 && address < size) {
            return registers[address];
        } else {
            cout << "Invalid register address" << endl;
            return -1; // Return a default value indicating an error
        }
    }
 
    // Method to write a value to a register at a given address
    void writeRegister(int address, int value) {
        if (address >= 0 && address < size) {
            registers[address] = value;
        } else {
            cout << "Invalid register address" << endl;
        }
    }
};
 
int main() {
    // Create a register object with 10 registers
    Register registerArray(10);
 
    // Write values to registers
    registerArray.writeRegister(0, 45);
    registerArray.writeRegister(5, 120);
 
    // Read values from registers
    cout << "Register 0: " << registerArray.readRegister(0) << endl;
    cout << "Register 5: " << registerArray.readRegister(5) << endl;
    cout << "Register 7: " << registerArray.readRegister(7) << endl;
 
    // Attempt to write to an invalid register address
    registerArray.writeRegister(15, 999);
 
    return 0;
}


Java




public class Register {
    private int size;
    private int[] registers;
 
    // Constructor to initialize registers with 0
    public Register(int size) {
        this.size = size;
        this.registers = new int[size];
    }
 
    // Method to read a register at a given address
    public int readRegister(int address) {
        if (address >= 0 && address < size) {
            return registers[address];
        } else {
            System.out.println("Invalid register address");
            return -1; // Return a default value indicating an error
        }
    }
 
    // Method to write a value to a register at a given address
    public void writeRegister(int address, int value) {
        if (address >= 0 && address < size) {
            registers[address] = value;
        } else {
            System.out.println("Invalid register address");
        }
    }
 
    public static void main(String[] args) {
        // Create a register array with 10 registers
        Register registerArray = new Register(10);
 
        // Write values to registers
        registerArray.writeRegister(0, 45);
        registerArray.writeRegister(5, 120);
 
        // Read values from registers
        System.out.println("Register 0: " + registerArray.readRegister(0));
        System.out.println("Register 5: " + registerArray.readRegister(5));
        System.out.println("Register 7: " + registerArray.readRegister(7));
 
        // Attempt to write to an invalid register address
        registerArray.writeRegister(15, 999);
    }
}
 
// This code is contributed by akshitaguprzj3


Python




class Register:
    def __init__(self, size):
        self.size = size
        self.registers = [0] * size 
        # Initialize all registers with 0
    def read_register(self, address):
        if 0 <= address < self.size:
            return self.registers[address]
        else:
            print("Invalid register address")
            return None
    def write_register(self, address, value):
        if 0 <= address < self.size:
            self.registers[address] = value
        else:
            print("Invalid register address")
# Create a register array with
# 10 registers
register_array = Register(10)
# Write values to registers
register_array.write_register(0, 45)
register_array.write_register(5, 120)
# Read values from registers
print("Register 0:", register_array.read_register(0))
print("Register 5:", register_array.read_register(5))
print("Register 7:", register_array.read_register(7))
# Attempt to write to an
#invalid register address
register_array.write_register(15, 999)


C#




using System;
 
public class Register {
    private int size;
    private int[] registers;
 
    // Constructor to initialize registers with 0
    public Register(int size)
    {
        this.size = size;
        this.registers = new int[size];
    }
 
    // Method to read a register at a given address
    public int ReadRegister(int address)
    {
        if (address >= 0 && address < size) {
            return registers[address];
        }
        else {
            Console.WriteLine("Invalid register address");
            return -1; // Return a default value indicating
                       // an error
        }
    }
 
    // Method to write a value to a register at a given
    // address
    public void WriteRegister(int address, int value)
    {
        if (address >= 0 && address < size) {
            registers[address] = value;
        }
        else {
            Console.WriteLine("Invalid register address");
        }
    }
 
    public static void Main(string[] args)
    {
        // Create a register array with 10 registers
        Register registerArray = new Register(10);
 
        // Write values to registers
        registerArray.WriteRegister(0, 45);
        registerArray.WriteRegister(5, 120);
 
        // Read values from registers
        Console.WriteLine("Register 0: "
                          + registerArray.ReadRegister(0));
        Console.WriteLine("Register 5: "
                          + registerArray.ReadRegister(5));
        Console.WriteLine("Register 7: "
                          + registerArray.ReadRegister(7));
 
        // Attempt to write to an invalid register address
        registerArray.WriteRegister(15, 999);
    }
}


Javascript




class Register {
    // Constructor to initialize registers with 0
    constructor(size) {
        this.size = size;
        this.registers = new Array(size).fill(0);
    }
 
    // Method to read a register at a given address
    readRegister(address) {
        if (address >= 0 && address < this.size) {
            return this.registers[address];
        } else {
            console.log("Invalid register address");
            return -1;
        }
    }
 
    // Method to write a value to a register at a given address
    writeRegister(address, value) {
        if (address >= 0 && address < this.size) {
            this.registers[address] = value;
        } else {
            console.log("Invalid register address");
        }
    }
}
 
// Usage example
let registerArray = new Register(10);
 
// Write values to registers
registerArray.writeRegister(0, 45);
registerArray.writeRegister(5, 120);
 
// Read values from registers
console.log("Register 0: " + registerArray.readRegister(0));
console.log("Register 5: " + registerArray.readRegister(5));
console.log("Register 7: " + registerArray.readRegister(7));
 
// Attempt to write to an invalid register address
registerArray.writeRegister(15, 999);


Output

Register 0: 45
Register 5: 120
Register 7: 0
Invalid register address

Register Array | Introduction, Implementation and Applications

A register array is a collection of contiguous registers in computer programming and digital hardware design. Registers are small and high-speed storage units within the computer’s CPU that store data temporarily for processing. A register array allows for the efficient storage and retrieval of the data elements using index-based addressing.

Similar Reads

How to create a Register Array?

Here’s an approach to creating a simple register array in Python along with the Implementation code:...

Program to create a Register Array:

Below is the Implementation of Register arrays :...

Applications of Register Array:

...

Contact Us