汇编网首页登录博客注册
huibian的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
友情链接

[2007-11-20 10:59] 推荐博文 C语言的关键字在tcc.exe中的位置

图片载入中
上图是将tcc.exe中的int->acc,写了一个a.c,编译没有错误(~_~)

一个c程序首先需要用tcc.exe进行编译,也就是说c检测语法是由tcc完成的,那么关键字一定在tcc.exe中。

debug tcc.exe

用s命令搜索到关键字的位置并显示。

位置如下:
-d
2AF0:BB80  93 49 D6 47 20 24 0B 00-02 48 20 24 03 00 0E 48   .I.G $...H $...H
2AF0:BB90  20 24 02 00 16 48 20 24-1B 00 5F 63 73 00 5F 64    $...H $.._cs._d
2AF0:BBA0  73 00 5F 65 73 00 5F 73-73 00 61 73 6D 00 63 64   s._es._ss.asm.cd
2AF0:BBB0  65 63 6C 00 66 61 72 00-68 75 67 65 00 69 6E 74   ecl.far.huge.int
2AF0:BBC0  65 72 72 75 70 74 00 6E-65 61 72 00 70 61 73 63   errupt.near.pasc
2AF0:BBD0  61 6C 00 63 6F 6E 73 74-00 73 69 67 6E 65 64 00   al.const.signed.
2AF0:BBE0  76 6F 6C 61 74 69 6C 65-00 65 6E 75 6D 00 76 6F   volatile.enum.vo
2AF0:BBF0  69 64 00 61 75 74 6F 00-62 72 65 61 6B 00 63 61   id.auto.break.ca
-d
2AF0:BC00  73 65 00 63 68 61 72 00-63 6F 6E 74 69 6E 75 65   se.char.continue
2AF0:BC10  00 64 65 66 61 75 6C 74-00 64 6F 00 64 6F 75 62   .default.do.doub
2AF0:BC20  6C 65 00 65 6C 73 65 00-65 78 74 65 72 6E 00 66   le.else.extern.f
2AF0:BC30  6C 6F 61 64 00 66 6F 72-00 67 6F 74 6F 00 69 66   loat.for.goto.if
2AF0:BC40  00 61 63 63 00 6C 6F 6E-67 00 72 65 67 69 73 74   .int.long.regist
2AF0:BC50  65 72 00 72 65 74 75 72-6E 00 73 68 6F 72 74 00   er.return.short.
2AF0:BC60  73 69 7A 65 6F 66 00 73-74 61 74 69 63 00 73 74   sizeof.static.st
2AF0:BC70  72 75 63 74 00 73 77 69-74 63 68 00 74 79 70 65   ruct.switch.type
-d
2AF0:BC80  64 65 66 00 75 6E 69 6F-6E 00 75 6E 73 69 67 6E   def.union.unsign
2AF0:BC90  65 64 00 77 68 69 6C 65-00 00 70 63 6D 70 40 00   ed.while..pcmp@.
2AF0:BCA0  FF FF 49 66 00 46 6F 72-00 44 6F 2D 77 68 69 6C   ..If.For.Do-whil
2AF0:BCB0  65 00 57 68 69 6C 65 00-53 77 69 74 63 68 00 42   e.While.Switch.B
2AF0:BCC0  72 65 61 6B 00 43 6F 6E-74 69 6E 75 65 00 52 65   reak.Continue.Re
2AF0:BCD0  74 75 72 6E 00 47 6F 74-6F 00 18 19 00 00 00 00   turn.Goto.......
2AF0:BCE0  00 00 00 00 01 02 02 02-02 02 02 02 02 02 02 02   ................
2AF0:BCF0  0D 0D 0E 0E 0E 09 07 08-0C 0C 03 00 05 06 0A 0A   ................

把关键字int改成acc的话,那么你在c下编程定义整形变量的时候就得用了 int a = 0 <--> acc a = 0;  ~_~" 
评论次数(16)  |  浏览次数(2095)  |  类型(C语言学习) |  收藏此文  | 

[  Wednesday   发表于  2007-11-20 11:13  ]

洞察。

[  fishboy   发表于  2007-11-20 12:07  ]

you are right !

[  cxn   发表于  2007-11-20 12:27  ]

呵呵,c语言中隐藏的秘密.

[  游客   发表于  2007-11-20 15:48  ]

怎么用阿,我怎么查不到这些数据?
s命令怎么用阿?

[  游客   发表于  2007-11-20 17:34  ]

秘密?哦了解了

[  mouse   发表于  2007-11-21 09:20  ]

假设DS=0AF0。
s命令:
s 0AF0:0 ffff "int"

[  游客   发表于  2007-11-21 12:39  ]

利害阿,把人家tc都反汇编了!

[  lion   发表于  2007-11-21 14:40  ]

“一个c程序首先需要用tcc.exe进行编译,也就是说c检测语法是由tcc完成的,那么关键字一定在tcc.exe中”--思考的过程。学习过程中要思考。加油!

[  游客   发表于  2007-11-21 15:09  ]

用s命令查"int"太多了,我都不知道是哪个,还好有同学说找"float",只有三个,很快找到,但是不能保存,用"w"指令也不行,提示不能保存,郁闷...

[  mouse   发表于  2007-11-22 09:02  ]

多谢楼上提醒我才找到关键字的位置~
我查了一下,exe文件是不能保存的,可以先把扩展名.exe去掉再debug就可以保存了,保存完了再把名字改回来~_~"

[  游客   发表于  2007-11-23 18:13  ]

改的过程不困难,但是能想到这点很利害。为什么非得用int定义整形呢?造反有理!

顶一下博主

[  游客   发表于  2007-11-25 14:28  ]

造反有理~

[  dreamhk   发表于  2007-12-04 12:05  ]

试了下,效果不错...  

[  huibian   发表于  2007-12-12 09:39  ]

一个反汇编的小技巧,大家可以都试试~

没准你哪天用汇编反出来一个“绿色软件”呢

[  游客   发表于  2007-12-17 17:56  ]

顶下,给我开了一扇反汇编的门~

[  游客   发表于  2010-05-24 16:11  ]

高手哦

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码