Avr8bit-emulator
An emulator for the Atmel AVR 8-bit microcontroller
|
#include "arithm_logic.h"
Go to the source code of this file.
Functions | |
void | add (uint8_t d, uint8_t r, struct CORE *core) |
Add without carry. | |
void | adc (uint8_t d, uint8_t r, struct CORE *core) |
Add with carry. | |
void | adiw (uint8_t d, uint8_t K, struct CORE *core) |
Add immediate to word. | |
void | sub (uint8_t d, uint8_t r, struct CORE *core) |
Subtract. | |
void | subi (uint8_t d, uint8_t K, struct CORE *core) |
Subtract immediate. | |
void | sbc (uint8_t d, uint8_t r, struct CORE *core) |
Subtract with carry. | |
void | sbci (uint8_t d, uint8_t K, struct CORE *core) |
Subtract immediate with carry. | |
void | sbiw (uint8_t d, uint8_t K, struct CORE *core) |
Subtract immediate from word. | |
void | and (uint8_t d, uint8_t r, struct CORE *core) |
Logical AND. | |
void | andi (uint8_t d, uint8_t K, struct CORE *core) |
Logical AND with immediate. | |
void | or (uint8_t d, uint8_t r, struct CORE *core) |
Logical OR. | |
void | ori (uint8_t d, uint8_t K, struct CORE *core) |
Logical OR with immediate. | |
void | eor (uint8_t d, uint8_t r, struct CORE *core) |
Perform bitwise exclusive OR between two registers. | |
void | com (uint8_t d, struct CORE *core) |
Perform one's complement on a register. | |
void | neg (uint8_t d, struct CORE *core) |
Perform two's complement (negation) on a register. | |
void | sbr (uint8_t d, uint8_t K, struct CORE *core) |
Set bits in a register. | |
void | cbr (uint8_t d, uint8_t K, struct CORE *core) |
Clear bits in a register. | |
void | inc (uint8_t d, struct CORE *core) |
Increment the value of a register. | |
void | dec (uint8_t d, struct CORE *core) |
Decrement the value of a register. | |
void | tst (uint8_t d, struct CORE *core) |
Test for zero or minus after AND operation. | |
void | clr (uint8_t d, struct CORE *core) |
Clear a register (set to zero). | |
void | ser (uint8_t d, struct CORE *core) |
Set all bits in a register. | |
void | mul (uint8_t d, uint8_t r, struct CORE *core) |
Multiplies two unsigned 8-bit integers and stores the result in the CORE structure. | |
void | muls (uint8_t d, uint8_t r, struct CORE *core) |
Multiplies two signed 8-bit integers and stores the result in the CORE structure. | |
void | mulsu (uint8_t d, uint8_t r, struct CORE *core) |
Multiplies a signed 8-bit integer with an unsigned 8-bit integer and stores the result in the CORE structure. | |
void | fmul (uint8_t d, uint8_t r, struct CORE *core) |
Multiplies two unsigned 8-bit integers with fractional representation and stores the result in the CORE structure. | |
void | fmuls (uint8_t d, uint8_t r, struct CORE *core) |
Multiplies two signed 8-bit integers with fractional representation and stores the result in the CORE structure. | |
void | fmulsu (uint8_t d, uint8_t r, struct CORE *core) |
Multiplies a signed 8-bit integer with an unsigned 8-bit integer with fractional representation and stores the result in the CORE structure. | |
void adc | ( | uint8_t | d, |
uint8_t | r, | ||
struct CORE * | core | ||
) |
Add with carry.
d | Destination register. |
r | Source register. |
core | Pointer to the CORE structure. |
Definition at line 19 of file arithm_logic.c.
References SREG::C, CORE::gp, inc_pc(), GP::R, CORE::sreg, and update_sreg_arithm().
void add | ( | uint8_t | d, |
uint8_t | r, | ||
struct CORE * | core | ||
) |
Add without carry.
d | Destination register index |
r | Source register index |
core | Pointer to the CORE structure |
Definition at line 3 of file arithm_logic.c.
References CORE::gp, inc_pc(), GP::R, and update_sreg_arithm().
void adiw | ( | uint8_t | d, |
uint8_t | K, | ||
struct CORE * | core | ||
) |
Add immediate to word.
d | Destination register. |
K | Immediate value. |
core | Pointer to the CORE structure. |
Definition at line 35 of file arithm_logic.c.
References CORE::gp, inc_pc(), GP::R, and udpate_sreg_arithm_16bit().
void and | ( | uint8_t | d, |
uint8_t | r, | ||
struct CORE * | core | ||
) |
Logical AND.
d | Destination register. |
r | Source register. |
core | Pointer to the CORE structure. |
Definition at line 133 of file arithm_logic.c.
References CORE::gp, inc_pc(), GP::R, and update_sreg_logic().
void andi | ( | uint8_t | d, |
uint8_t | K, | ||
struct CORE * | core | ||
) |
Logical AND with immediate.
d | Destination register. |
K | Immediate value. |
core | Pointer to the CORE structure. |
Definition at line 147 of file arithm_logic.c.
References CORE::gp, inc_pc(), GP::R, and update_sreg_logic().
void cbr | ( | uint8_t | d, |
uint8_t | K, | ||
struct CORE * | core | ||
) |
Clear bits in a register.
d | Destination register. |
K | Constant value to clear bits. |
core | Pointer to the CORE structure. |
Definition at line 238 of file arithm_logic.c.
void clr | ( | uint8_t | d, |
struct CORE * | core | ||
) |
Clear a register (set to zero).
d | Destination register. |
core | Pointer to the CORE structure. |
Definition at line 278 of file arithm_logic.c.
void com | ( | uint8_t | d, |
struct CORE * | core | ||
) |
Perform one's complement on a register.
d | Destination register. |
core | Pointer to the CORE structure. |
Definition at line 203 of file arithm_logic.c.
References CORE::gp, inc_pc(), GP::R, update_sreg_C(), and update_sreg_logic().
void dec | ( | uint8_t | d, |
struct CORE * | core | ||
) |
Decrement the value of a register.
d | Destination register. |
core | Pointer to the CORE structure. |
Definition at line 258 of file arithm_logic.c.
void eor | ( | uint8_t | d, |
uint8_t | r, | ||
struct CORE * | core | ||
) |
Perform bitwise exclusive OR between two registers.
d | Destination register. |
r | Source register. |
core | Pointer to the CORE structure. |
Definition at line 189 of file arithm_logic.c.
References CORE::gp, inc_pc(), GP::R, and update_sreg_logic().
void fmul | ( | uint8_t | d, |
uint8_t | r, | ||
struct CORE * | core | ||
) |
Multiplies two unsigned 8-bit integers with fractional representation and stores the result in the CORE structure.
d | First operand. |
r | Second operand. |
core | Pointer to the CORE structure where the result will be stored. |
Definition at line 334 of file arithm_logic.c.
void fmuls | ( | uint8_t | d, |
uint8_t | r, | ||
struct CORE * | core | ||
) |
Multiplies two signed 8-bit integers with fractional representation and stores the result in the CORE structure.
d | First operand. |
r | Second operand. |
core | Pointer to the CORE structure where the result will be stored. |
Definition at line 346 of file arithm_logic.c.
void fmulsu | ( | uint8_t | d, |
uint8_t | r, | ||
struct CORE * | core | ||
) |
Multiplies a signed 8-bit integer with an unsigned 8-bit integer with fractional representation and stores the result in the CORE structure.
d | First operand (signed). |
r | Second operand (unsigned). |
core | Pointer to the CORE structure where the result will be stored. |
Definition at line 358 of file arithm_logic.c.
void inc | ( | uint8_t | d, |
struct CORE * | core | ||
) |
Increment the value of a register.
d | Destination register. |
core | Pointer to the CORE structure. |
Definition at line 248 of file arithm_logic.c.
void mul | ( | uint8_t | d, |
uint8_t | r, | ||
struct CORE * | core | ||
) |
Multiplies two unsigned 8-bit integers and stores the result in the CORE structure.
d | First operand. |
r | Second operand. |
core | Pointer to the CORE structure where the result will be stored. |
Definition at line 298 of file arithm_logic.c.
void muls | ( | uint8_t | d, |
uint8_t | r, | ||
struct CORE * | core | ||
) |
Multiplies two signed 8-bit integers and stores the result in the CORE structure.
d | First operand. |
r | Second operand. |
core | Pointer to the CORE structure where the result will be stored. |
Definition at line 310 of file arithm_logic.c.
void mulsu | ( | uint8_t | d, |
uint8_t | r, | ||
struct CORE * | core | ||
) |
Multiplies a signed 8-bit integer with an unsigned 8-bit integer and stores the result in the CORE structure.
d | First operand (signed). |
r | Second operand (unsigned). |
core | Pointer to the CORE structure where the result will be stored. |
Definition at line 322 of file arithm_logic.c.
void neg | ( | uint8_t | d, |
struct CORE * | core | ||
) |
Perform two's complement (negation) on a register.
d | Destination register. |
core | Pointer to the CORE structure. |
Definition at line 218 of file arithm_logic.c.
void or | ( | uint8_t | d, |
uint8_t | r, | ||
struct CORE * | core | ||
) |
Logical OR.
d | Destination register. |
r | Source register. |
core | Pointer to the CORE structure. |
Definition at line 161 of file arithm_logic.c.
References CORE::gp, inc_pc(), GP::R, and update_sreg_logic().
void ori | ( | uint8_t | d, |
uint8_t | K, | ||
struct CORE * | core | ||
) |
Logical OR with immediate.
d | Destination register. |
K | Immediate value. |
core | Pointer to the CORE structure. |
Definition at line 175 of file arithm_logic.c.
References CORE::gp, inc_pc(), GP::R, and update_sreg_logic().
void sbc | ( | uint8_t | d, |
uint8_t | r, | ||
struct CORE * | core | ||
) |
Subtract with carry.
d | Destination register. |
r | Source register. |
core | Pointer to the CORE structure. |
Definition at line 84 of file arithm_logic.c.
References SREG::C, CORE::gp, inc_pc(), GP::R, CORE::sreg, and update_sreg_arithm().
void sbci | ( | uint8_t | d, |
uint8_t | K, | ||
struct CORE * | core | ||
) |
Subtract immediate with carry.
d | Destination register. |
K | Immediate value. |
core | Pointer to the CORE structure. |
Definition at line 100 of file arithm_logic.c.
References SREG::C, CORE::gp, inc_pc(), GP::R, CORE::sreg, and update_sreg_arithm().
void sbiw | ( | uint8_t | d, |
uint8_t | K, | ||
struct CORE * | core | ||
) |
Subtract immediate from word.
d | Destination register. |
K | Immediate value. |
core | Pointer to the CORE structure. |
Definition at line 116 of file arithm_logic.c.
References CORE::gp, inc_pc(), GP::R, and udpate_sreg_arithm_16bit().
void sbr | ( | uint8_t | d, |
uint8_t | K, | ||
struct CORE * | core | ||
) |
Set bits in a register.
d | Destination register. |
K | Constant value to set bits. |
core | Pointer to the CORE structure. |
Definition at line 228 of file arithm_logic.c.
void ser | ( | uint8_t | d, |
struct CORE * | core | ||
) |
Set all bits in a register.
d | Destination register. |
core | Pointer to the CORE structure. |
Definition at line 288 of file arithm_logic.c.
void sub | ( | uint8_t | d, |
uint8_t | r, | ||
struct CORE * | core | ||
) |
Subtract.
d | Destination register. |
r | Source register. |
core | Pointer to the CORE structure. |
Definition at line 52 of file arithm_logic.c.
References CORE::gp, inc_pc(), GP::R, and update_sreg_arithm().
void subi | ( | uint8_t | d, |
uint8_t | K, | ||
struct CORE * | core | ||
) |
Subtract immediate.
d | Destination register. |
K | Immediate value. |
core | Pointer to the CORE structure. |
Definition at line 68 of file arithm_logic.c.
References CORE::gp, inc_pc(), GP::R, and update_sreg_arithm().
void tst | ( | uint8_t | d, |
struct CORE * | core | ||
) |
Test for zero or minus after AND operation.
d | Destination register. |
core | Pointer to the CORE structure. |
Definition at line 268 of file arithm_logic.c.