【发布时间】:2009-11-24 13:45:56
【问题描述】:
MASM32 中使用的这个符号:
@CodeSize 返回一个表示默认代码距离的整数。
我想了解“默认代码距离”是什么意思?
托尼
【问题讨论】:
MASM32 中使用的这个符号:
@CodeSize 返回一个表示默认代码距离的整数。
我想了解“默认代码距离”是什么意思?
托尼
【问题讨论】:
默认代码距离是 NEAR 或 FAR。
@CodeSize 可以取两个值,0 或 1,它决定跳跃、呼叫等是在 NEAR 还是 FAR 距离。
如果您使用的是 TINY、SMALL、COMPACT 或 FLAT 内存模型,则所有跳转等都是 NEAR,并且@CodeSize == 0。 如果您使用的是 HUGE、LARGE、MEDIUM 内存模型,则 als 跳转等是 FAR 和 @CodeSize == 1。
【讨论】:
很可能是两个最远的代码之间的最大距离(以字节为单位,在内存中)。这可能会影响跳转的生成方式,因为可能有不同的指令能够实现不同的跳转长度。更短的跳转可以用更短(更小,通常更快)的指令进行编码。
This page 提到了人们可以期待的整数值:
0 代表 TINY、SMALL、COMPACT 和 FLAT 型号,1 用于中型、大型和 巨大的模型(数值相等)。
【讨论】: