首页
社区
课程
招聘
[旧帖] [原创]Newbie的系统学习历程 0.00雪花
发表于: 2009-9-18 15:47 4281

[旧帖] [原创]Newbie的系统学习历程 0.00雪花

2009-9-18 15:47
4281
收藏
免费 7
支持
分享
最新回复 (46)
雪    币: 100
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
26
<DAY 8>

[进度]    VOL 3 一,二章完结,   
    X86 deassembler 的 GPPU instruction prefix 处理代码

[小结]   这两章的内容部分和前面的重复,  还有部分对本书的一些书写约定作说明,  用于掌握的信息量不大,  主要就是X86的 instruction format.    我看完了之后,  得出的结论只有一个:  只有神经病才会把ISA设计成这副模样.   把ISA搞得这么复杂不是神经病一般人干不了这活.   原来时间和金钱是会把人变成神经病的.   废话到此.

X86的instruction format:


      我自己对这图没把握,  估计仅仅对 Legacy Protected Mode 的GPPU有效,  因为看它把 X87, XMM, MMX写得很不一样似的,  很吓人.    我觉得写出这些instruction有什么相同的特点意义不算太大,  不如从零堆积有用.

到些,  再说点题外话,  一本手册编得这么烂(大量重复内容,  有些图片漏印掉内容,  逻辑看起来不清晰),  AMD 这么大一公司...   对比起来,  让人匪夷所思!    而且还是放在Developer Center的内容.  难道钱都拿去打广告了??  还是拿去买ATI了??    AMD 输给 Intel ,  不无道理,  有好几次我都在对照着看 Intel 的手册才搞清楚它写的是什么玩意.

今天的 deassembler 算是开工了, 我在写代码的时候发现一个很严重的问题:  在写代码的阶段总是有新的思路,  然后这时候不跳回去重新设计, 而是直接进行代码级修改.    这是极其无效率的行为!    初学的应该吸取这样的教训, 别把坏习惯留在学习的阶段.   虽然只写了几句,  不过花了我整个钟头时间.     还有就是我看的一些英文书说能不使用global variable就不要使用,   我不知道中文的怎么写,  不过我的经验应该有用,  就是:   注意variable的使用范围是不错, 不过不要太拘泥,  global 和 local 是个相对的概念.   variable 的作用范围才是关键.

附代码(未经测试):
/***************************************
purpose:  check the number of prefix,
          report all kinds of result,
          supply opecode entry point
prototype:  int GetPrefix((char*));
Local: int i        //i=report state
global: char* pOpcode
In:  char* pInstrctn
Out: state indicator        //0~5 Normal, 6 too much prefix, 7 repeated prefix
type-define: enum prefixclass_t
*****************************************/

/******* For test only**********
enum prefixclass_t{
    Noprefix, Operandsizepre, Addresssizepre,
    Repeatpre, Lockpre, Segmentpre,
    Error_prefix_repeated, Error_prefix_too_much};
char *pOpcode;
******* For test only**********/

int GetPrefix(char* pInstrctn)
{
    extern char* pOpcode;

    prefixclass_t tLastprefix=Noprefix;

    int i=0;

    for(;;){
        switch(*(pInstrctn+i)){
        case 66h:                       //66h=Operandsizepre
            if(Operandsizepre==tLastprefix)
                return Error_prefix_repeated;
            else
                break;
        case 67h:                       //67h=Addresssizepre
            if(Addresssizepre==tLastprefix)
                return Error_prefix_repeated;
            else
                break;
        case 0xF3:                      //f3h, f2h=Repeatpre
        case 0xF2:
            if(Repeatpre==tLastprefix)
                return Error_prefix_repeated;
            else
                break;
        case 0xF0:                      //f0h=Lockpre
            if(Lockpre==tLastprefix)
                return Error_prefix_repeated;
            else
                break;
        case 0x2E: case 0x3E: case 0x26:        //all=Segmentpre
        case 0x36: case 0x64: case 0x65:
            if(Segmentpre==tLastprefix)
                return Error_prefix_repeated;
            else
                break;
        default:
            return i;
        }
        i++;
        pOpcode=pInstrctn+i;
        if(i>5)
            return Error_prefix_too_much;
    }
}
上传的附件:
2009-9-25 16:52
0
雪    币: 100
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
27
额,楼主是想写操作系统?路漫漫漫漫漫漫漫漫漫漫~~(起码比我光说不练好多了)
====================================================

啊, OS,  我是想过,  不过这个目标是放在了60岁以后, 哈哈~  开个玩笑,  明天的事都不知道, 哪能计划那么远.   

我学习没什么大目标,  只是觉得这很好, 而我的时间又很多, 于是就开始了.

你自己也加油吧,  别把目标放太远了,  从一个 driver 开始也挺不错的.  据说Linux 也是这么开始的.
2009-9-25 18:02
0
雪    币: 141
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
看了半天没看懂,一开始就学这么难的,楼主打击偶的信心啊~
2009-9-25 18:23
0
雪    币: 100
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
29
不是一开始, 你看漏了,  我是乱七八糟先看了1年头, 差不多两年的.  坚持, 多思考, 最关键是有兴趣,  一定可以的,  虽然我还不是知道得太多.
2009-9-25 18:53
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
这是学前班啊……这难道还是基础不好,我想请问楼主那前两年看的基本ebook是哪方面的啊……我也参考一下先……
2009-9-26 16:18
0
雪    币: 55
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
同样是新手,支持兄弟一把。。。。。。。。。
2009-9-26 16:32
0
雪    币: 100
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
32
1.The C++ Programming Language
2.The C Programming Language
3.Reversing_Secrets_of_Reverse_Engineering
3.Programming Windows
4.Programming Applications for Microsoft Windows
5.Platform SDK Documentation
6.Microsoft Windows Internals (前几章, 越看越不懂了, 停手)
7.The Art of Assembly Language Programming
8.The Essentials of Computer Organization and Architecture
9.Data Structures and Algorithms  (粗略地看了下)
10.operating system principles---PER BRINCH  HANSEN  (几章)
11.Compilers - Principles, Techniques, and Tools 2e -Aho - (瞄了几眼~)
12.  其他,  比如 hamming code,  Run Length Limited code,  huffman code, regular expression ,  TCP/IP 杂七杂八什么的.

排名不分先后,   主要就是多看点,  找到自己真正喜欢的是什么,  最遗憾的是没有看过计算机图形学和其他多媒体处理,  数学没学过,  等数学入了门再看吧

加油吧, 静下心来会比这看得多的,  我大部分的时间都拿来在网上发牢骚了,  很可惜.
2009-9-26 16:38
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
啊……只看过2、7啊……
看来我也需要重定向来好好规划下啦
2009-9-27 08:21
0
雪    币: 100
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
34
这两天在学习使用 VIM,  所以进度有点慢了, 不过 GPPU 的deassembler 已经设计完了,  不久应该能把源码全部放上来,  不过没有测试过, 悬啊~

整个核心都使用 procedural programming paradigm,而且 因为它的工作负载比较重, 而且OOP似乎没什么用武之地, 就是人看起来比较累。
2009-9-28 17:36
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
膜拜的学习精神 跟上
2009-9-28 19:35
0
雪    币: 100
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
36
<DAY 16>

好久没能更新了, 最近家里发生了一些事, 烦着, 不过还好, 人还支持得住, 也没忘学习。

以前没系统地写过大一点的程序, 觉得自己语言过关, 写那些不过是简单地重复劳动, 结果不是这样的。  我碰到了很多的问题, 比如, 经常修改设计, 算法, 甚至是数据结构。。。  还有对付BUG, 有时还要全部推倒。 我看软件工程的整个流程都要掌握才能避免一些低级的重复的劳动。

还有很多想说, 不过说多了也没用, 需要自己亲自体会, 这几天还得再对设计进行评估, 前几天的努力又给BUG掉了, 惨~~

PS:  我是体会到自己努力的心血被盗将是怎么样的一个心境了, 所以以后学成, 我一定不能去破解人家的软件, 觉得贵可以用正当竞争的方式去解决问题, 不能用旁门左道。  这话一说出来, 我的盗版XP就是该换掉了。
2009-10-3 16:16
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
坚持下来总会有结果的
2009-10-3 23:50
0
雪    币: 100
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
38
好久没上来更新了,  因为最近找了个工作, 药店售货员, 养活了自己, 不过时间也相对少了很多, 还需要点时间去适应新的环境, 还在试着挤时间完成学前班的任务, 尽快吧, 希望这个月内能完结。

最近几天还在写 deassembler , 设计总不能让自己满意, 或许一开始路就偏了, 不应该去设计, 或是尽可能详细地观察, 对它进行精确地描述, 也许程序员的工作有一部分就在此吧。

有突破之后我会尽快放上来。
2009-10-11 20:49
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
39
英文,英文,哎,你怎么那么讨厌我呢?想和英文交朋友,都不知道需要多少时间啊,不可以边学编程边跟英文么?
2009-10-12 03:06
0
雪    币: 100
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
40
一心不要二用,  专业英文很快就可以熟练看的, 不像要写作那么难掌握, 弄懂意思就好
2009-10-12 09:01
0
雪    币: 212
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
楼主学习的精神永远值得我学习!
2009-10-12 09:39
0
雪    币: 1
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
看LZ的学习过程 深为LZ的学习精神打动
话说我没有看玩过任何一本计算机方面的书 也没看过几本书
看来得向LZ学习了
2009-10-12 10:37
0
雪    币: 43
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
43
坚持很重要 加油
2009-10-12 21:04
0
雪    币: 215
活跃值: (20)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
44
我支持你! 呵呵
2009-12-26 16:51
0
雪    币: 72
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
45
Newbie....我很好奇,你是0ginr的?
http://newbiecoder.0ginr.com/
哈哈,这个词,大家都使用,不过看你的综述,跟newbiecoder应当不是一个人啦。

希望你不要放弃自己的路。忙中抽余,来给我们发帖啊。
2009-12-26 23:42
0
雪    币: 961
活跃值: (127)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
46
楼主就发了几天就跑了?还没有我坚持得久
2013-10-1 07:48
0
雪    币: 14
活跃值: (26)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
47
好老的帖子,不知道楼主变成什么大牛了
2013-10-5 09:29
0
游客
登录 | 注册 方可回帖
返回
//