当前位置:三九宝宝网 → 宝宝百科 → 宝宝知识 → 正文

MethodTable内存空间分配中加法运算算法

更新:12-14 整理:39baobao.com
字体:

[大班列算式教学——学习5的加法]活动目标:1、根据图中物体的不同点来列出算式,巩固对加法含义的理解。2、初步懂得交换加号前后两数位置得数不变的规律。活动重点:根据图中物体的不同点来列出算式,巩固对加法...+阅读

在分析MethodTable具体分配内存实现的时候,看到了计算MethodTable的大小,然后分配空间的算法。其中有个加法运算实现的非常赞,特地截取出来。

所有的MethodTable的分配,都是通过methodtable中的一个static方法AllocagteNewMT来实现的,该方法定义如下:

MethodTable * MethodTable::AllocagteNewMT(EEClass *pClass,

DWORD dwVtableSlots,

DWORD dwGCSize,

DWORD dwNumInterfaces,

DWORD numGenericArgs,

DWORD dwNumDicts,

DWORD cbDict,

ClassLoader *pClassLoader,

BaseDomain *pDomain,

BOOL isInterface,

BOOL fHasGenericsStaticsInfo,

BOOL fNeedsRemotableMethodInfo,

BOOL fNeedsRemotingVtsInfo,

BOOL fHasThreadOrContextStatics

, AllocMemTracker *pamTracker

)

下面是该方法中计算大小的一段,采用模板来忽略类型带来的影响:

DWORD cbTotalSize = 0;

DWORD cbDicts = 0;

if (!ClrSafeInt::multiply(dwNumDicts, sizeof(TypeHandle*), cbDicts) ||

!ClrSafeInt::addition((DWORD)size, cbDicts, cbTotalSize) ||

!ClrSafeInt::addition(cbTotalSize, dwGCSize, cbTotalSize))

ThrowHR(COR_E_OVERFLOW);

然后转到addition((DWORD)size, cbDicts, cbTotalSize)的实现,加法的实现如下,加入了对各种情况的严格考虑:

Returns true if safe, false on overflow

static inline bool addition(T lhs, T rhs, T

}

ok

}

else

{

two positives

if((T)(MaxInt() - lhs)< rhs)

{

return false;

}

OK

}

}

else overflow not possible

result = lhs + rhs;

return true;

}

else unsigned, and two symbols is mixed

{

if((T)(MaxInt() - lhs)< rhs)

{

return false;

}

result = lhs + rhs;

return true;

}

}

其中,涉及到中间调用的几个方法如下:

static bool IsSigned()

{

return( (T)-1< 0 );

}

Check if lhs and rhs is mixed Sign symbols

static bool IsMixedSign(T lhs, T rhs)

{

return ((lhs ^ rhs)< 0);

}

both of the following should optimize away

static T MinInt()

{

if(IsSigned())

{

return (T)((T)1

本文地址:https://www.39baobao.com/show/39_50772.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

大班数学课教学——学习5的加法应用题活动目标:1、让幼儿掌握5的加法。2、幼儿学会解答简单的口述加法应用题,培养幼儿初步的分析问题的能力。活动重点:掌握5的加法算式。活动难点:学会解答简单的口述加法应用题。...

大班计算优质课——学习5的加法加法算式活动目标:1、引导幼儿按物体特征分解画面,并能根据物体的不同特征编加法应用题,列加法算式。2、学习5的加法算式,能正确算出5的4道加法算式。活动重点:学习5的加法算式,能正确算...

《9加几的进位加法》教学反思9加几这一教学内容是20以内进位加的第一课时,起着承上启下的重要作用。为了上好本节课,达到预期的学习目标,我将本课教学过程分为三个环节。一、创设情境,复旧引新在这个环节...

关系运算的等价性经过安全约束以后,关系代数、元组演算、域演算三类关系运算的表达能力是等价的,它们之间可以相互转换。下面三个定律是它们相互转换的根据。定理1:若E是一个由五种基本关系代...

“小数乘法简便运算”教学的细节反思教学 小数乘法的简便运算 一课时,我在课前设计是将学生已学知识 整数的简便运算 与新接触的小数乘法的知识相联系,从而迁移到小数乘法的简便运算的内容上来。首先,边复习整数的...

《5以内的加法》教学设计反思一、活动导入,教师左手拿3个铅笔,右手拿2个铅笔,让学生说一说是怎样拿铅笔的教师将两只手上的铅笔合在一起让学生观察,说说看到了什么?提问:我们把几个和几个合起来了?小结并揭...

计算机运算基础二数的补码表示法二、 数的补码表示法 数的正负号用 0和1表示,使正负号和数值全部数字化了。既然如此,能否将正负号和数值放在一起进行运算,而不因正负号的不同分别处理呢?为此,提出计算机数的补...

德语语法有关德语单位和运算的表达1. 关于年代的德语表达 1998 im Jahr(e) 1998 neunzehnhundertachtundneunzig 1921 im Jahr(e) 1921 neunzehnhunderteinundzwanzig 2005 im Jahr(e) 2005 zweitausendfünf...

《整数加法运算定律推广到小数》教学设计保城中心校 李晓华,学习内容:人教板四年级数学下册教科书79页例4 学习目标: 1、了解整数运算定律对小数加法同样适用。 2、能运用加法运算定律和减法性质进行简算。 学习重点难...