[fw]Real Mode addressing

Real Mode

在 real mode 中,memory 的使用被限制在 1 MByte(220 bytes) 內,可用的 address 範圍為 0x00000 ~ 0xFFFFF。

由 memory address 的可用範圍可知,存取需要 20 bits 的長度,但在 8086 的 CPU 架構中僅有 16-bit register,因此必須使用兩個 16 bits 值的組合來表示一個 memory address。
其中前面的 16 bits 稱為 selector,必須存於 segment register 中,而後面的 16 bits 稱為 offset,其中實際 memory address 的計算方式如下:

16 * selector + offset (即為 selector 補 0 到後方再與 offset 相加)

而 real mode 有幾個問題:

  1. 單一 selector 只能參照到 64K 大小的 memory,但如果程式碼大小超過 64K,就必須強制分成多個片段來執行;同樣的,不只程式碼,連太大的資料也是會有相同問題。
  2. segment address 的衝突問題,舉例來說:04808 可以被以下幾個組合所參照:
    • 047C:0048 (047C0 + 0048 = 04808)
    • 047D:0038 (047D0 + 0038 = 04808)
    • 047E:0028 (047E0 + 0028 = 04808)

由於種種問題,造成在 real mode 中設計程式是一件非常困難的事情。

[fw]Real Mode addressing

时间: 2024-10-20 11:42:14

[fw]Real Mode addressing的相关文章

physical addressing virtual addressing 物理寻址 虚拟寻址

Computer Systems A Programmer's Perspective Second Edition The main memory of a computer system is organized as an array of M contiguousbyte-sized cells. Each byte has a unique physical address (PA). The ?rst byte hasan address of 0, the next byte an

ld: warning: PIE disabled. Absolute addressing (perhaps -mdynamic-no-pic) not allowed in code signed PIE, but used in _ff_h264_decode_mb_cabac from

导入环信的SDK后出现这样的waring ld: warning: PIE disabled. Absolute addressing (perhaps -mdynamic-no-pic) not allowed in code signed PIE, but used in _ff_h264_decode_mb_cabac from /Users/hanyutong/Desktop/万家灯火即时通讯插件/AppCanPlugin/AppCanPlugin/uexWanJiaDengHuo/Ea

[fw]linux 下如何查看和踢除正在登陆的其它用户

linux 下如何查看和踢除正在登陆的其它用户 Posted on 2011/09/01 如何在linux下查看当前登录的用户,并且踢掉你认为应该踢掉的用户?请使用who这个命令来查看当前正在登录的用户 [[email protected] http]# whoroot tty1 Apr 9 13:17http pts/0 Apr 16 15:13 (192.168.8.235)http pts/1 Apr 16 15:13 (192.168.8.235) 注意:可能有朋友马上要叫出来了:“什么

[fw]Linux下tty/pty/pts/ptmx详解

基本概念: 1> tty(终端设备的统称):tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适.终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备. 2> pty(虚拟终端):但是如果我们远程telnet到主机或使用xterm时不也需要一个终端交互么?是的,这就是虚拟终端pty(pseudo-tty) 3> pts/ptm

【转】Classful IPv4 addressing definition

Classful addressing definition Class Leadingbits Size of networknumber bit field Size of restbit field Numberof networks Addressesper network Total addressesin class Start address End address Class A     0     8     24     128 (27)     16,777,216 (22

[Java - 调用WebService]{http://schemas.microsoft.com/ws/2005/05/addressing/none}ActionNotSupported

- Unable to find required classes (javax.activation.DataHandler and javax.mail.internet.MimeMultipart). Attachment support is disabled.AxisFault faultCode: {http://schemas.microsoft.com/ws/2005/05/addressing/none}ActionNotSupported faultSubcode: faul

[fw]拦截系统调用

今天在ubuntu中玩了下“拦截系统调用”,记录下自己对整个实现的理解. 原理 在linux kernel中,系统调用都放在一个叫做“sys_call_table”的分配表里面,在进入一个系统调用的最后一步,会调用与eax中包含的系统调用号对应的特定服务例程: [cpp] view plaincopy call *sys_call_table(,%eax,4) 因为分派表中的每个表项占4个字节,因此首先把系统调用号乘以4,再加上sys_call_table分配表的起始地址,然后从从这个地址单元获

Python实战之Selenium自动化测试web刷新FW

需求:将手工登录,手工刷新服务器的FW转化为Python+Selenium实现自动化操作. 1.创建用户表,实现数据与脚本分离.需要读取模块. 2.自动化刷新FW. 不说话,直接上代码: 1userdata.py #!/usr/bin/env python3 # -*- coding:utf-8 -*- ''' A model that use xlrd to read excel(include user info) ''' import xlrd class XlUserInfo(objec

[fw]Understanding a Kernel Oops!

An “Oops” is what the kernel throws at us when it finds something faulty, or an exception, in the kernel code. It’s somewhat like the segfaults of user-space. An Oops dumps its message on the console; it contains the processor status and the CPU regi