随笔分类 - 体系结构
摘要:转自:http://my.oschina.net/alphajay/blog/5025逻辑地址(Logical Address) 是指由程序产生的与段相关的偏移地址部分。例如,你在进行C语言指针编程中,可以读取指针变量本身值(&操作),实际上这个值就是逻辑地址,它是相对于你当前进程数据段的地址,不和绝对物理地址相干。只有在Intel实模式下,逻辑地址才和物理地址相等(因为实模式没有分段或分页机制,Cpu不进行自动地址转换);逻辑也就是在Intel 保护模式下程序执行代码段限长内的偏移地址(假定代码段、数据段如果完全一样)。应用程序员仅需与逻辑地址打交道,而分段和分页机制对您来说是完全透
阅读全文
摘要:http://blog.csdn.net/marshmallow1005/article/details/6594400
阅读全文
摘要:之前也知道只是没有去细想,如今一细想更好的理解了一下。都知道8086的寄存器是16位的,也就是 只能寻址 64K(64k=2^16),但是却有20根地址线,那要肿么办呢。于是就想出了一个分段寻址的方法,也就是 段基址+偏移量,其中段基址和偏移量都是16位的,但是在计算地址的时候,将段基址左移4位,然后在加上偏移量,这样就20位了。每一段根据偏移量来看,就是64k。但是,今天一想,这样做的话会有重复的情况啊,也就是不同的段基址和偏移量加起来,可能会对应同样的一个地址,而且还会有溢出啊,比如段基址是0xFFFF,偏移量是0xFFFF,这样不就超出了么。然后查了下,在维基百科中有这么一段:http:
阅读全文
摘要:一直都说开机加电之后,将CS设置为0xFFFF,IP设置为0x0000,这样组成的地址就是0xFFFF0,而这个就是BIOS的入口地址,之后CPU读取这个地址的代码,然后就巴拉巴拉的开始执行下去了。现在想知道这个地址0xFFFF0是在主板上呢,还是在内存上。想着如果是统一编址的话,就可能是去读取主板上的ROM,但是看书上的图,有像是在RAM中,如果是在 内存 中,那是什么时候,由哪段程序将ROM中的程序读取到内存中的。自己猜的话,应该这个过程是固定的硬件实现的,将ROM中的所有内容拷贝到内存中最高位那一段中,之后,0xFFFF0就必然是指内存中的地址了。百度了一下,有篇文章就是说这个的。转了过
阅读全文

浙公网安备 33010602011771号