Skip to content

Commit a42796a

Browse files
committed
Add checks for stack overflow/underflow
1 parent 23c012c commit a42796a

File tree

5 files changed

+69
-79
lines changed

5 files changed

+69
-79
lines changed

ALU/ALU.go

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,25 +5,21 @@ func Adder(val1, val2 int64) int64 {
55
return val1 + val2
66
}
77

8-
98
//Function to perform logical AND operation of two int64 numbers.
109
func LogicalAND(val1, val2 int64) int64 {
1110
return val1 & val2
1211
}
1312

14-
1513
//Function to perform logical OR operation of two int64 numbers.
1614
func LogicalOR(val1, val2 int64) int64 {
1715
return val1 | val2
1816
}
1917

20-
2118
//Function to perform logical XOR operation of two int64 numbers.
2219
func LogicalXOR(val1, val2 int64) int64 {
2320
return val1 ^ val2
2421
}
2522

26-
2723
//Function to perform unsigned addition of two uint64 numbers.
2824
//Used only for setting Carry flag.
2925
func UnsignedAdder(val1, val2 uint64) uint64 {

Memory/Constants.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,19 @@
11
package memory
22

3+
// Program counter increment value
34
const INCREMENT = 1
5+
6+
// Data memory size in number of words
47
const MEMORY_SIZE = 4096
8+
9+
// Stack size in number of words
510
const STACK_SIZE = 256
11+
12+
// XZR register number
613
const XZR = 31
14+
15+
// Stack pointer register number
716
const SP = 28
8-
const LR = 30
17+
18+
// Link register number
19+
const LR = 30

Memory/DataMemory.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,21 +18,21 @@ var registers, buffer [32]int64
1818

1919
var flagNegative, flagZero, flagOverflow, flagCarry bool
2020

21-
// method to initiate register values.
21+
// InitRegisters is a function to initiate register values.
2222
func InitRegisters() {
2323
registers[XZR] = 0
2424
registers[SP] = MEMORY_SIZE * 4
2525
}
2626

27-
// function to store register values in a buffer.
27+
// SaveRegisters is a function to store register values in a buffer.
2828
func SaveRegisters() {
2929
var i int
3030
for i = 0; i < 32; i++ {
3131
buffer[i] = registers[i]
3232
}
3333
}
3434

35-
// function to pretty print register values to terminal.
35+
// ShowRegisters is a function to pretty print register values to terminal.
3636
func ShowRegisters(showAll bool) {
3737
var i int
3838
var hasUpdated bool = false

0 commit comments

Comments
 (0)