JILK - (6) - 32-Bit and 16-Bit Address and Operand Sizes

In real-address mode, thedefault addressing and operand size is 16 bits. An address-size overridecan be used in real-address mode to enable 32-bit addressing. However, themaximum allowable 32-bit linear address is still 000FFFFFH. As we know, inreal-address mode, we use 16 bits to represent a segment base address and use16 bits to represent an offset in that segment. Here it may mean that we canuse 32 bits to represent an offset in that segment, so that a segment can coverthe whole 00000000H~000FFFFFH address space in real-address mode.

In protected mode, IA-32processors can be configured for 32-bit or 16-bit address and operand sizes. Here it means that whenusing 32-bit addressing, a logical address (or far pointer) consists of a16-bit segment selector and a 32-bit offset, and when using 16-bit address, anaddress consists of a 16-bit segment selector and a 16-bit offset. So how toconfigure whether to use 32-bit or 16-bit address and operand sizes? That isdepended on the segment descriptor for the currently executing code segment.

In 64-bit mode, flat address space forcode, data, and stacks is used in most cases. So the size of effective address calculations is 64 bits. Aneffective-address calculation uses a 64-bit base and index registers andsign-extend displacements to 64 bits. All 16-bit and 32-bit addresscalculations are zero-extended in IA-32e mode to form 64-bit addresses. Addresscalculations are first truncated to the effective address size of the currentmode ( 64-bit mode or compatibility mode ), as overridden by any address-sizeprefix. The result is then zero-extended to the full 64-bit address width.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值