From cdcb701aa48a974f97df31438f32071b3001ac7b Mon Sep 17 00:00:00 2001 From: Test_User Date: Wed, 14 Jun 2023 04:04:22 -0400 Subject: Add a bunch of fewer-parameter versions of instructions, specify that special returns only take effect after other writes complete --- cpu/instructions/arithmetic/add_inplace.txt | 10 ++++++++++ cpu/instructions/arithmetic/signed_divide_inplace.txt | 10 ++++++++++ cpu/instructions/arithmetic/signed_multiply_inplace.txt | 14 ++++++++++++++ cpu/instructions/arithmetic/subtract_inplace.txt | 10 ++++++++++ cpu/instructions/arithmetic/unsigned_divide_inplace.txt | 10 ++++++++++ cpu/instructions/arithmetic/unsigned_multiply_inplace.txt | 14 ++++++++++++++ cpu/instructions/bitwise/and_inplace.txt | 10 ++++++++++ .../bitwise/arithmetic_shift_right_inplace.txt | 10 ++++++++++ cpu/instructions/bitwise/exclusive_or_inplace.txt | 10 ++++++++++ cpu/instructions/bitwise/not_inplace.txt | 10 ++++++++++ cpu/instructions/bitwise/or_inplace.txt | 10 ++++++++++ cpu/instructions/bitwise/rotate_left_inplace.txt | 10 ++++++++++ cpu/instructions/bitwise/rotate_right_inplace.txt | 10 ++++++++++ cpu/instructions/bitwise/shift_left_inplace.txt | 10 ++++++++++ cpu/instructions/bitwise/shift_right_inplace.txt | 10 ++++++++++ cpu/instructions/execution_control/iretde.txt | 2 ++ cpu/instructions/execution_control/irete.txt | 2 ++ cpu/instructions/execution_control/ireth.txt | 2 ++ cpu/instructions/execution_control/irett.txt | 2 ++ cpu/instructions/execution_control/ret.txt | 10 ++++++++++ cpu/instructions/execution_control/tret.txt | 2 ++ 21 files changed, 178 insertions(+) create mode 100644 cpu/instructions/arithmetic/add_inplace.txt create mode 100644 cpu/instructions/arithmetic/signed_divide_inplace.txt create mode 100644 cpu/instructions/arithmetic/signed_multiply_inplace.txt create mode 100644 cpu/instructions/arithmetic/subtract_inplace.txt create mode 100644 cpu/instructions/arithmetic/unsigned_divide_inplace.txt create mode 100644 cpu/instructions/arithmetic/unsigned_multiply_inplace.txt create mode 100644 cpu/instructions/bitwise/and_inplace.txt create mode 100644 cpu/instructions/bitwise/arithmetic_shift_right_inplace.txt create mode 100644 cpu/instructions/bitwise/exclusive_or_inplace.txt create mode 100644 cpu/instructions/bitwise/not_inplace.txt create mode 100644 cpu/instructions/bitwise/or_inplace.txt create mode 100644 cpu/instructions/bitwise/rotate_left_inplace.txt create mode 100644 cpu/instructions/bitwise/rotate_right_inplace.txt create mode 100644 cpu/instructions/bitwise/shift_left_inplace.txt create mode 100644 cpu/instructions/bitwise/shift_right_inplace.txt create mode 100644 cpu/instructions/execution_control/ret.txt diff --git a/cpu/instructions/arithmetic/add_inplace.txt b/cpu/instructions/arithmetic/add_inplace.txt new file mode 100644 index 0000000..66aeae6 --- /dev/null +++ b/cpu/instructions/arithmetic/add_inplace.txt @@ -0,0 +1,10 @@ +Number of parameters: 2 + +Usage: + add_inplace + +Effect: + Adds to and stores it in + +Exceptions: + None diff --git a/cpu/instructions/arithmetic/signed_divide_inplace.txt b/cpu/instructions/arithmetic/signed_divide_inplace.txt new file mode 100644 index 0000000..875dd5e --- /dev/null +++ b/cpu/instructions/arithmetic/signed_divide_inplace.txt @@ -0,0 +1,10 @@ +Number of parameters: 2 + +Usage: + signed_divide_inplace + +Effect: + Performs the signed division /, storing the integer result in and the remainder in + +Exceptions: + Division by 0 diff --git a/cpu/instructions/arithmetic/signed_multiply_inplace.txt b/cpu/instructions/arithmetic/signed_multiply_inplace.txt new file mode 100644 index 0000000..3ca0d0c --- /dev/null +++ b/cpu/instructions/arithmetic/signed_multiply_inplace.txt @@ -0,0 +1,14 @@ +Number of parameters: 2 + +Usage: + signed_multiply_inplace + +Effect: + Performs the signed multiplication *, storing the integer result in and any overflowing bits into + +Exceptions: + None + +Flags: + Sets the overflow flag if : != + Carry flag is never set diff --git a/cpu/instructions/arithmetic/subtract_inplace.txt b/cpu/instructions/arithmetic/subtract_inplace.txt new file mode 100644 index 0000000..686e25b --- /dev/null +++ b/cpu/instructions/arithmetic/subtract_inplace.txt @@ -0,0 +1,10 @@ +Number of parameters: 2 + +Usage: + subtract_inplace + +Effect: + Subtracts from and stores it in + +Exceptions: + None diff --git a/cpu/instructions/arithmetic/unsigned_divide_inplace.txt b/cpu/instructions/arithmetic/unsigned_divide_inplace.txt new file mode 100644 index 0000000..66ca896 --- /dev/null +++ b/cpu/instructions/arithmetic/unsigned_divide_inplace.txt @@ -0,0 +1,10 @@ +Number of parameters: 2 + +Usage: + unsigned_divide_inplace + +Effect: + Performs the unsigned division /, storing the integer result in and the remainder in + +Exceptions: + Division by 0 diff --git a/cpu/instructions/arithmetic/unsigned_multiply_inplace.txt b/cpu/instructions/arithmetic/unsigned_multiply_inplace.txt new file mode 100644 index 0000000..f2d9770 --- /dev/null +++ b/cpu/instructions/arithmetic/unsigned_multiply_inplace.txt @@ -0,0 +1,14 @@ +Number of parameters: 2 + +Usage: + unsigned_multiply_inplace + +Effect: + Performs the unsigned multiplication *, storing the integer result in and any overflowing bits into + +Exceptions: + None + +Flags: + Sets the carry flag if the overflow was non-zero + The overflow flag is never set diff --git a/cpu/instructions/bitwise/and_inplace.txt b/cpu/instructions/bitwise/and_inplace.txt new file mode 100644 index 0000000..21cb147 --- /dev/null +++ b/cpu/instructions/bitwise/and_inplace.txt @@ -0,0 +1,10 @@ +Number of parameters: 2 + +Usage: + and_inplace + +Effect: + Sets to the bitwise and of and + +Exceptions: + None diff --git a/cpu/instructions/bitwise/arithmetic_shift_right_inplace.txt b/cpu/instructions/bitwise/arithmetic_shift_right_inplace.txt new file mode 100644 index 0000000..9507e65 --- /dev/null +++ b/cpu/instructions/bitwise/arithmetic_shift_right_inplace.txt @@ -0,0 +1,10 @@ +Number of parameters: 2 + +Usage: + arithmetic_shift_right_inplace + +Effect: + Sets to shifted to the right bits, filling in leading bits with the most significant bit of + +Exceptions: + None diff --git a/cpu/instructions/bitwise/exclusive_or_inplace.txt b/cpu/instructions/bitwise/exclusive_or_inplace.txt new file mode 100644 index 0000000..e0b4b47 --- /dev/null +++ b/cpu/instructions/bitwise/exclusive_or_inplace.txt @@ -0,0 +1,10 @@ +Number of parameters: 2 + +Usage: + exclusive_or_inplace + +Effect: + Sets to the bitwise exclusive or of and + +Exceptions: + None diff --git a/cpu/instructions/bitwise/not_inplace.txt b/cpu/instructions/bitwise/not_inplace.txt new file mode 100644 index 0000000..f854a8d --- /dev/null +++ b/cpu/instructions/bitwise/not_inplace.txt @@ -0,0 +1,10 @@ +Number of parameters: 1 + +Usage: + not_inplace + +Effect: + Sets to the bitwise not of + +Exceptions: + None diff --git a/cpu/instructions/bitwise/or_inplace.txt b/cpu/instructions/bitwise/or_inplace.txt new file mode 100644 index 0000000..22598a3 --- /dev/null +++ b/cpu/instructions/bitwise/or_inplace.txt @@ -0,0 +1,10 @@ +Number of parameters: 2 + +Usage: + or_inplace + +Effect: + Sets to the bitwise or of and + +Exceptions: + None diff --git a/cpu/instructions/bitwise/rotate_left_inplace.txt b/cpu/instructions/bitwise/rotate_left_inplace.txt new file mode 100644 index 0000000..65424f5 --- /dev/null +++ b/cpu/instructions/bitwise/rotate_left_inplace.txt @@ -0,0 +1,10 @@ +Number of parameters: 2 + +Usage: + rotate_left_inplace + +Effect: + Sets to rotated to the left bits + +Exceptions: + None diff --git a/cpu/instructions/bitwise/rotate_right_inplace.txt b/cpu/instructions/bitwise/rotate_right_inplace.txt new file mode 100644 index 0000000..18f7968 --- /dev/null +++ b/cpu/instructions/bitwise/rotate_right_inplace.txt @@ -0,0 +1,10 @@ +Number of parameters: 2 + +Usage: + rotate_right_inplace + +Effect: + Sets to rotated to the right bits + +Exceptions: + None diff --git a/cpu/instructions/bitwise/shift_left_inplace.txt b/cpu/instructions/bitwise/shift_left_inplace.txt new file mode 100644 index 0000000..109e271 --- /dev/null +++ b/cpu/instructions/bitwise/shift_left_inplace.txt @@ -0,0 +1,10 @@ +Number of parameters: 2 + +Usage: + shift_left_inplace + +Effect: + Sets to shifted to the left bits + +Exceptions: + None diff --git a/cpu/instructions/bitwise/shift_right_inplace.txt b/cpu/instructions/bitwise/shift_right_inplace.txt new file mode 100644 index 0000000..4000d6e --- /dev/null +++ b/cpu/instructions/bitwise/shift_right_inplace.txt @@ -0,0 +1,10 @@ +Number of parameters: 2 + +Usage: + shift_right_inplace + +Effect: + Sets to shifted to the right bits + +Exceptions: + None diff --git a/cpu/instructions/execution_control/iretde.txt b/cpu/instructions/execution_control/iretde.txt index 9e13fa5..9f1ed76 100644 --- a/cpu/instructions/execution_control/iretde.txt +++ b/cpu/instructions/execution_control/iretde.txt @@ -10,5 +10,7 @@ Effect: PR is set to OPRDE Will be considered to be in the previous exception handler + Only takes effect after all other writes are complete + Exceptions: `Invalid operation` if not currently executing a double excetion handler diff --git a/cpu/instructions/execution_control/irete.txt b/cpu/instructions/execution_control/irete.txt index 273ea59..c057344 100644 --- a/cpu/instructions/execution_control/irete.txt +++ b/cpu/instructions/execution_control/irete.txt @@ -10,5 +10,7 @@ Effect: PR is set to OPRE No longer considered to be in an exception handler + Only takes effect after all other writes are complete + Exceptions: `Invalid operation` if not currently executing an excetion handler diff --git a/cpu/instructions/execution_control/ireth.txt b/cpu/instructions/execution_control/ireth.txt index 54c92c8..955e1d3 100644 --- a/cpu/instructions/execution_control/ireth.txt +++ b/cpu/instructions/execution_control/ireth.txt @@ -10,5 +10,7 @@ Effect: PR is set to OPRH Hardware interrupts are allowed again + Only takes effect after all other writes are complete + Exceptions: `Invalid operation` if not currently executing a hardware interrupt diff --git a/cpu/instructions/execution_control/irett.txt b/cpu/instructions/execution_control/irett.txt index 0ee81f0..4289420 100644 --- a/cpu/instructions/execution_control/irett.txt +++ b/cpu/instructions/execution_control/irett.txt @@ -6,6 +6,8 @@ Usage: Effect: See ../../task_switching/execution.txt + Only takes effect after all other writes are complete + Exceptions: `Invalid operation` if not in an exception/interrupt handler diff --git a/cpu/instructions/execution_control/ret.txt b/cpu/instructions/execution_control/ret.txt new file mode 100644 index 0000000..cb3a1a2 --- /dev/null +++ b/cpu/instructions/execution_control/ret.txt @@ -0,0 +1,10 @@ +Number of parameters: 0 + +Usage: + ret + +Effect: + Same as `pop IP` + +Exceptions: + None diff --git a/cpu/instructions/execution_control/tret.txt b/cpu/instructions/execution_control/tret.txt index 7b2cd9d..53b1097 100644 --- a/cpu/instructions/execution_control/tret.txt +++ b/cpu/instructions/execution_control/tret.txt @@ -6,6 +6,8 @@ Usage: Effect: See ../../task_switching/execution.txt + Only takes effect after all other writes are complete + Exceptions: `Invalid operation` if not the original task -- cgit v1.2.3