计算机芯片运行时,它读取存储在内存中的指令码(一个或多个字节,指示处理器完成某个任务),指令码所需数据在内存中,也从内存中读取。
以指针区别数据和指令码。
instruction pointer用于帮助处理器理解哪些指令码已经处理过,接着处理哪些;包括改变指令指针位置的指令。
数据指针data pointer帮助处理器了解内存中数据区域(堆栈)的起始位置。数据进入,指针“向下移动”。
指令码包含错干信息片段,明确指明处理器要完成什么操作。
每条指令都必须至少包含一个字节的operation code。(处理器预定义好的)
指令码格式:
1.可选指令前缀;
2.操作码
3.可选修饰符
4.可选数据元素
寄存器是处理器芯片内的组件,用于临时存储处理器正在处理的数据。
指令前缀:
1.锁定前缀(表示指令将单独使用共享内存区域)、重复前缀(重复,常常处理字符串);
2.段覆盖前缀(可覆盖定义了的段寄存器的指令),分支提示前缀(尝试向处理器提供程序在条件跳转遇见中最可能路径的线索);
3.操作数长度覆盖前缀(通知处理器,程序将在这个操作码内切换16位和32位的操作数长度。);
4.地址长度覆盖前缀(通知处理器程序将切换16位和32位的内存地址,程序将切换到另一种长度);
修饰符:
协助操作码来定义执行的功能中涉及到什么寄存器和内存位置:
1.寻址方式说明符(ModR/M)字节
2.比例-索引-基址(SIB)字节
3.1、2或4个地址移位字节
数据元素:
一些指令码从内存位置或者急促请你读取数据,一些指令码在其自身内包含数据。
IA32采用小字节序,比如1写为4字节16进制01 00 00 00(低位首先出现);
HLL(高级语言)分类:
1.编译语言
2.解释语言
编译程序步骤:
1.将HLL语句编译为原始指令码;
2.连接原始指令码来生成可执行程序;
汇编语言 定义变量:
1.指向一个内存位置的标记
2.内存字节的数据类型和默认值
堆栈是特殊的内存区域,保留用做程序中函数之间传递数据元素,也可以林仕德存储和检索。数据元素。(是计算机为应用程序保留的内存范围的结尾位置保留的内存区域。)
堆栈指针用于指向堆栈中的下一个内存位置以便放入和取出数据。
汇编语言至少要声明的段落:
1.数据段(声明为程序存储数据元素的 内存区域。静态)
2.bss段(静态内存段,包含用于以后在程序中声明的数据的缓冲区。用0填充。)
3.文本段(内存中存储汇编语言指令码的固定区域。)