如果cs:ip指向某个内存单元,那么cpu就从这个单元开始往下执行,所以这里就是指令(程序)。
如果用任何一种存储器寻址方式指向某个单元,并且是作为 *** 作数来使用的,那么这就是数据。
其实如果只是单纯看一个内存单元,是无法区分到底是数据还是程序的。只能是写程序时,用汇编指令做不同的解释。
对的,一般执行程序段都是从CS:IP开始的,所以当2进制的数据被CS:IP指向时,才成为可执行的指令或程序,在内存中数据和程序都是以机器码存储的,也就是以2进制存储的,你可以用debug调试程序,熟了就知道了,里面有反汇编,可以查找到内存中的内容的指令,-U当程序运行时,会调入内存,不同时间运行,程序放在内存的位置也可能不同:每运行一次程序,程序都会重新向 *** 作系统申请内存空间,这时 *** 作系统会分配一段全新的内存空间给程序,故不同时间运行程序,程序在内存中的位置是不同的。 2.使用内存中数据的位置也可能不同:当程序申请内存空间后, *** 作系统会将所申请的内存空间的地址传给程序,尽管数据的位置不同,但程序知道数据的地址,故程序依然可以根据地址来找到所需要的数据。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)