如何确定内存中的信息哪些是数据,哪些程序?数据和程序有区别吗?
刚刚开始学汇编,以下是我找到的,不知道是否正确。
数据和程序在内存中是没有区别的,它们都是内存中的数据,当EIP指针指向哪,CPU就加载那段内存中的数据,如果是不正确的指令格式,CPU就会发生错误中断. 数据和程序在内存中都是已2进制的数据存贮,只有当2进制的数据被CS:IP指向时,才成为可执行的指令或程序。
在现在CPU的保护模式中,每个内存段都其描述符,这个描述符记录着这个内存段的访问权限(可读,可写,可执行).这最就变相的指定了哪个些内存中存储的是指令哪些是数据.
CS(CodeString)指向的是指令段地址,指令段寄存器
DS(DataString)指向的是数据段地址,数据段寄存器
SS(StackString)指向的是栈顶段地址,栈段寄存器
内存中的数据和程序没有区别,说都是以2进制形式存储的!
CS指向的段地址里,存的是指令
DS指向的段地址里,存的是数据