第二季度UWA STAR —只有不拒绝问题,才能进一步解决问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/UWA4D/article/details/98644014

UWA问答从诞生到现在已有2年半载天,累积近2千个问答,大量的问题可以在此得到快速精准的解决。有开发者称,在UWA问答上得到回答的速度极为神速,更有评论比谷歌还精准。

 

 

所谓聚沙成塔,这样的评价背后是一群幕后英雄致敬,他们乐于分享问题的观点和经验、积极求索解决方案的边界。今天将隆重介绍第二季度且再次获得该殊荣的UWA STAR——郑骁,不少朋友对他已不陌生:活跃在我们UWA问答上的、QQ群里的沁血寒冰。


UWA STAR小档案

郑骁:先后在知名游戏厂商参与手游开发,代表作有《明珠三国2》、《正义联盟》、《妖精的尾巴:魔导少年》等,现就职于网元圣唐,从事客户端开发和优化工作。

郑骁的回答评论不仅快速及时,同时也结合了他丰富的实战经验,帮助很多提问者解决了难题。部分精彩回答如下:

 

 


个人专访

 

 

当我们遇到难题时,身在此山中,云深不知处。而把自己的观点晒出来,其实也是借别人的眼镜做镜子来检视自己的观点。

现在UWA问答上的问题越来越丰富,覆盖了研发的各个方面,从Unity到Unreal,从渲染模块到动画模块到粒子系统......在这些交流中,我们既从宏观上探讨项目管理的经验心得,也从微观上讨论某个效果的方法实现;有提问,有补充,有验证,有结论,有分享...UWA相信,对一个好问题的理解就是这样,很少一开始就正确,无一不是在成长的过程中,不断地去校误、矫正,最后才臻于完善,才会慢慢磨砺出一个个更接近真理的答案。

UWA认为,一个行业进步的速度,取决于这个行业内问题被解决的速度。我们希望能继续遇到这样与我们志同道合的人,来帮助游戏行业快速进步。愿我们都能成为这样的一颗STAR,不仅自身散发光和热也愿意照亮他人,同时能靠在一起,将凝聚的光热照亮游戏行业前进的道路。


UWA STAR招募

招募对象:所有UWA会员
标准:凡是在问答社区上解答、回答被点赞、回答被采纳者都会得到相应的积分,当季累积积分最高者将成为该季度的UWA STAR。

UWA STAR享受权益:UWA特设奖牌、UWA DAY 2020技术大会通行证、差旅补助以及各种意想不到的小福利在等着你!

关于UWA问答社区

UWA问答社区是UWA团队精心打造的技术交流社区,研发团队能快速方便地交流开发以及优化过程中的知识心得。至今已有超千个问题在UWA问答上得到了回答和解决。

展开阅读全文

只有一流高手才能回答的问题

08-14

Forplus.cpp(在正文下面)是一个简单的C++程序,用TC3.0写的。rnForplus.asm(在正文下面)是执行 TCC -S Forplus.cpp将Forplus.cpp编译为ASM形式的文件rnrn现将问题描述如下:rnrn在Forplus.cpp中定义了三个类A,B,C都含有虚函数。rn然后又定义了一个类D,采用多继承的方式从A,B,C公有派生。rn根据的C++的语法,D的对象的数据区应为如下结构,rnrn pVtableA; //指向D,A的虚函数表rn A的成员变量rn pVtableB; //指向D,B的虚函数表rn B的成员变量rn pVtableC; //指向D,C的虚函数表rn C的成员变量rnrn D的成员变量rnrnrn可在Forplus.asm中看到D的对象d1的数据区如下:rnrn//*************************d1*********************************rn_d1 label wordrn dw @@D@rn db 4 dup (0)rn rn//************************************************************rnrn@@D@指向一个虚函数表,rnrn//*********************************table********************************rnrn@@D@ label bytern dw @@D@Afn1$qvrn dw @@A@Afn2$qvrn dw @@D@Bfn1$qvrn dw @@D@Cfn1$qvrn dw _$Arn dw @@B@Bfn2$qvrn dw _$Brn dw @@C@Cfn2$qvrn//**********************************************************************rnrn但在_d1中只能找到这一个指针,理论上应有三个指针,请问这是为什么? rnrn//*******************Forplus.cpp start*****************************rnint t;rnrnclass Arnrnpublic:rnrn virtual void Afn1()t+=1;rn virtual void Afn2()t+=1;rn rn;rnclass Brnrnpublic:rnrn virtual void Bfn1()t+=1;rn virtual void Bfn2()t+=1;rnrn rn;rnrnclass Crnrnpublic:rn virtual void Cfn1()t+=1;rn virtual void Cfn2()t+=1;rn rn;rnrnrnclass D:public A,public B,public Crnrn rnrnpublic:rnrn virtual void Afn1()t+=1;rn virtual void Bfn1()t+=1;rn virtual void Cfn1()t+=1;rn rnrn;rnrnD d1;rnrnA * pA;rnB * pB;rnrnvoid main()rnrn rn rn pA=&d1;rn pB=(B*)(&d1); rn rn pA->Afn1();rn pA->Afn2();rn rnrn//*************************Forplus.cpp end***************************rnrn//*******************Forplus.asm start**********************rnrn ifndef ??versionrn?debug macrorn endmrn$comm macro name,dist,size,countrn comm dist name:BYTE:count*sizern endmrn elsern$comm macro name,dist,size,countrn comm dist name[size]:BYTE:countrn endmrn endifrn ?debug S "forplus.cpp"rn ?debug C E9C7500B2D0B666F72706C75732E637070rn_TEXT segment byte public 'CODE'rn_TEXT endsrnDGROUP group _DATA,_BSSrn assume cs:_TEXT,ds:DGROUPrn_DATA segment word public 'DATA'rnd@ label byternd@w label wordrn_DATA endsrn_BSS segment word public 'BSS'rnb@ label byternb@w label wordrn_BSS endsrn_DATA segment word public 'DATA'rn_t label wordrn db 2 dup (?)rnrn//*************************d1*********************************rn_d1 label wordrn dw @@D@rn db 4 dup (0)rn rn//************************************************************rn_pA label wordrn db 2 dup (0)rn_pB label wordrn db 2 dup (0)rn_DATA endsrn_TEXT segment byte public 'CODE'rn ; rn ; void main()rn ; rn assume cs:_TEXTrn_main proc nearrn push bprn mov bp,sprn ; rn ; rn ; rn ; rn ; pA=&d1;rn ; rn mov word ptr DGROUP:_pA,offset DGROUP:_d1rn ; rn ; pB=(B*)(&d1); rn ; rn mov word ptr DGROUP:_pB,offset DGROUP:_d1+2rn ; rn ; rn ; pA->Afn1();rn ; rn push word ptr DGROUP:_pArn mov bx,word ptr DGROUP:_pArn mov bx,word ptr [bx]rn call word ptr [bx]rn pop cxrn ; rn ; pA->Afn2();rn ; rn push word ptr DGROUP:_pArn mov bx,word ptr DGROUP:_pArn mov bx,word ptr [bx]rn call word ptr [bx+2]rn pop cxrn ; rn ; rn ; rn ; rn pop bprn ret rn_main endprn_TEXT endsrn_DATA segment word public 'DATA'rn@D@ segment virtualrnrn//*********************************table********************************rnrn@@D@ label bytern dw @@D@Afn1$qvrn dw @@A@Afn2$qvrn dw @@D@Bfn1$qvrn dw @@D@Cfn1$qvrn dw _$Arn dw @@B@Bfn2$qvrn dw _$Brn dw @@C@Cfn2$qvrn//**********************************************************************rn@D@ endsrn_DATA endsrn_TEXT segment byte public 'CODE'rn@D@$vsn segment virtualrn assume cs:_TEXTrn_$B label nearrn mov bx,sprn add word ptr ss:[bx+2],65532rn jmp near ptr @@D@Cfn1$qvrn assume cs:_TEXTrn_$A label nearrn mov bx,sprn add word ptr ss:[bx+2],65534rn jmp near ptr @@D@Bfn1$qvrn@D@$vsn endsrn_TEXT endsrn_TEXT segment byte public 'CODE'rn@D@Afn1$qv segment virtualrn assume cs:_TEXTrn@@D@Afn1$qv proc nearrn push bprn mov bp,sprn inc word ptr DGROUP:_trn pop bprn ret rn@@D@Afn1$qv endprn@D@Afn1$qv endsrn_TEXT endsrn_TEXT segment byte public 'CODE'rn@A@Afn2$qv segment virtualrn assume cs:_TEXTrn@@A@Afn2$qv proc nearrn push bprn mov bp,sprn inc word ptr DGROUP:_trn pop bprn ret rn@@A@Afn2$qv endprn@A@Afn2$qv endsrn_TEXT endsrn_TEXT segment byte public 'CODE'rn@D@Bfn1$qv segment virtualrn assume cs:_TEXTrn@@D@Bfn1$qv proc nearrn push bprn mov bp,sprn inc word ptr DGROUP:_trn pop bprn ret rn@@D@Bfn1$qv endprn@D@Bfn1$qv endsrn_TEXT endsrn_TEXT segment byte public 'CODE'rn@D@Cfn1$qv segment virtualrn assume cs:_TEXTrn@@D@Cfn1$qv proc nearrn push bprn mov bp,sprn inc word ptr DGROUP:_trn pop bprn ret rn@@D@Cfn1$qv endprn@D@Cfn1$qv endsrn_TEXT endsrn_TEXT segment byte public 'CODE'rn@B@Bfn2$qv segment virtualrn assume cs:_TEXTrn@@B@Bfn2$qv proc nearrn push bprn mov bp,sprn inc word ptr DGROUP:_trn pop bprn ret rn@@B@Bfn2$qv endprn@B@Bfn2$qv endsrn_TEXT endsrn_TEXT segment byte public 'CODE'rn@C@Cfn2$qv segment virtualrn assume cs:_TEXTrn@@C@Cfn2$qv proc nearrn push bprn mov bp,sprn inc word ptr DGROUP:_trn pop bprn ret rn@@C@Cfn2$qv endprn ?debug C E9rn@C@Cfn2$qv endsrn_TEXT endsrn_DATA segment word public 'DATA'rns@ label bytern_DATA endsrn_TEXT segment byte public 'CODE'rn@C@Cfn2$qv segment virtualrn@C@Cfn2$qv endsrn_TEXT endsrn__$B equ _$Brn__$A equ _$Arn public _mainrn public _pBrn public _pArn public _d1rn public _trn_s@ equ s@rn endrn//******************Forplus.asm end******************************rnrn 论坛

没有更多推荐了,返回首页