江苏城乡住房建设部网站,东莞网站忧化,wordpress 速度,网页制作与设计源代码0 前言
全是基于x86系列处理器
1 寄存器与存储器的区别 2 汇编程序员眼中的系统结构
指令寄存器 PC#xff08;Program Counter#xff09; 指向下一条指令的地址
16位 CS:IP32位 EIP64位 RIP
寄存器与寄存器堆#xff08;Registers#xff09;
在处理器内部以名字方…0 前言
全是基于x86系列处理器
1 寄存器与存储器的区别 2 汇编程序员眼中的系统结构
指令寄存器 PCProgram Counter 指向下一条指令的地址
16位 CS:IP32位 EIP64位 RIP
寄存器与寄存器堆Registers
在处理器内部以名字方式访问的快速存储单元寄存器堆一系列寄存器的集合
条件码Condition Codes 汇编程序员眼中就是CPUMemory还有他们直接的通路还有他们的内部信息汇编程序员直接考虑CPU和Memory要去怎么做。
3 指令的执行过程 执行完指令之后会有状态的变化Condition codes的变化这些变化会被后面的其他指令作为依据进行相关判断从而执行相关命令例如C语言if else的本质就是这么回事。
4 C语言与汇编语言 在ATT格式中通过后缀表明操作的是哪种类型的数据。
这种表示方式不容易出错显式地说明了数据的宽度。
5 汇编语言实例两个整数相加
C语言代码
#include stdio.h
#include Windows.hint main() {int a 1;int b 3;int t a b;int c 1 22;system(pause);return 0;
}对应的汇编代码 右图可知
对于int t a b;被分解为三个步骤 从内存中取得a从内存中取得b并于a相加结果放入内存中的t中 对于int c 1 22;在编译阶段直接将立即数的加法算了出来。
寻址方式中的[bx - 11H] 减法没有关系如果减过头bx 11H那么就会重新轮回这个要根据机器数的宽度决定。 x86指令集是变长的不同指令的字节数不一样。
add指令整数加法不区分有无符号本质都是机器数相加输出什么取决于放在哪里当然没有这么做加法的因为没有实际意义。
给出一段代码比较 unsigned short a 40000;
short b 1;
unsigned short c a b;2.
unsigned short a 40000;
short b 1;
short c a b;思考浮点数加法呢
6 mov传送指令 不能两个都是内存单元是因为硬件不好实现。
x86指令中至多有一个操作数是内存单元。