方法论·REVIEW·设计模式&C++&前Wnd

Forth语言是令人惊讶的灵巧、浑然一体,思维方法很出色。

多阅读一下C++编译器生成的汇编代码绝对能加快学习的步伐。 —— 云风

学习新的技术,翻译一本相关的英文著作可以算是一条捷径。(踏实的翻译比起马虎粗看有用得多,实际翻译对英文的要求不高)

对于游戏程序的设计,除了整体框架外,考虑得最多的就是时间和空间了。

Strategy模式就是用来“封装”“算法”的,不用时间应用不同的业务规则(例子:CashSuper 收费选择算法)。

设计模式关心的问题:①复用;②扩展;③灵活组合;④维护。(例子:活字印刷,一个字模放到印刷另一本书;加入新的字模;排列出更另一版内容;修改容易——从《短歌行》说起。其实还包括高内聚、低耦合、隐藏逻辑处理层等)

优化代码从 “简单的计算器” 说起…… (命名、效率、严谨性-错误处理、OOP)

简单工厂模式

策略模式(①抽象策略角色(abstract);②具体策略(具体的arithmetic);③环境角色(content 上下文 用来引用策略,最终给客户端)。)

简单工厂+策略模式

细枝末节:virtual  override static 等。

关于ASM:

程序的本质:操作(指令) 参数 参数的定位方法(寻址方式)

80386的10个寄存器,7个“较”通用寄存器(EAX、EBX、ECX、EDX | ESI-惯于源地址、EDI-惯于指向目的地址、EBP-惯于作stack指针),EIP(指令指针),ESP(stack指针-16bit),PSW(状态寄存器:OF、ZF、SF、CF、AF、PF等 IF……)

①PUSH、CALL|POP、RET 会隐式改变ESP的值,单线程和多线程中的主线程的stack会处于整个地址空间的最低处 ESP(地址&value  增加 递减);

②将影响标志位和根据标志位做跳转的指令结合起来:CMP EAX,EBX    JNZ label       //CMP和SUB相似,但仅改变标志位;JNZ,if(ZF=0){跳转};ZF为0即是运算结果不为0,JNZ即Jump not zero;

③寻址方式(四种大类):1、立即寻址 MOV EAX,1   2、寄存器寻址 MOV EAX,EBX  3、直接寻址 MOV EAX,[0x0000]  4、间接寻址

 MOV EAX,[EBX+ECX*4+4] //可以理解为  基址 + 变址 + 常数偏移

用C语言的思想来理解就是…… 例如二维数组的访问

④汇编引用C++函数 或者 汇编写供C++调用的函数 ,编译的规则……(C++到ASM的编译规则-提高访问速度和,EAX-返回值、ECX-this指针、EDX-同EAX,//EBP-修改EBP间接寻址stack参数所在 ,用VC的内嵌汇编则可不考虑)

⑤修改EIP的值就如跳转JMP(无条件跳转)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值