6.4 ALU - 算术逻辑单元 算术逻辑单元(ALU)支持算术和逻辑运算在寄存器或寄存器和常数之间,单个寄存器操作也能被执行。ALU运算直接连到所有32通用寄存器。单时钟周期,在一个单一的时钟周期,算术运算之间的通用寄存器或寄存器立即执行并将结果存储在寄存器文件中。在一个算太或逻辑运算,状态寄存器以运算产生的结果反回信息来更新。 ALU操作分为三主要的种类-算术,逻辑,和比特功能。8和16位算术运算都支持,并且指令设置允许有效执行32位算术运算。硬件乘法器支持有符号和无符号乘法和小数格式。 6.4.1 硬件乘法 乘法器有能力乘以两个8位数到一个16位结果。硬件乘法器支持不同有符号,无符号,和小数变量: 。无符号整数乘法 。有符号整数乘法 。一个无符号整数乘以一个有符号整数 。无符号小数乘法 。无符号小数乘法 。一个有符号小数和一个无符号小数乘法 一个乘法用两个CPU时钟周期。 6.5 程序流程 当复位后,CPU状态是执行从flash程序存贮器低位地址也就是’0’开始。程序记数器(PC)指向下一个指令被取出。 程序的流程是由有条件的和无条件的跳转和调用指令来处理的直接地址空间。大多数AVR指令使用一个16位的字格式,数量有限使用的是32位格式。 在中断和子程序调用时,将返回地址存储在堆栈上。堆栈分配给一般的数据SRAM,因此堆栈大小只受限于总SRAM的大小和SRAM的使用。后复位,堆栈指针(SP)指出,在内部SRAM的最高地址。该的是读/写访问的输入/输出内存空间,实现多个堆栈或堆栈区域的容易实现。SRAM的数据可以很容易地通过五种不同的寻址模式在AVR CPU支持的访问。 6.6 状态寄存器 状态寄存器(SREG)含有大多数最近执行算术运算或逻辑指令。这个信息可以用来警示程序流为了执行条件操作。注意状态寄存器是所有的ALU运算后更新,在指令集参考指定。这将在许多原因删除需要使用专用的比较指令,导致更快,更紧凑的代码。 当输入中断例程或从一个返回时恢复时,该状态寄存器不会自动存储中断。这必须由软件来处理。 在输入/输出内存空间,状态寄存器是可访问的。
|