当前位置: 代码迷 >> 汇编语言 >> 请教用TCC生成的EXE文件怎样得到纯净的BIN文件
  详细解决方案

请教用TCC生成的EXE文件怎样得到纯净的BIN文件

热度:6721   发布时间:2013-02-26 00:00:00.0
请问用TCC生成的EXE文件怎样得到纯净的BIN文件
如题,我只在C文件中写了C=A+B这短短的一句话,生成的EXE文件居然要几KB,有没有方法将其中的我要实现的那句语句提取出来呢?听说GCC好像有这个功能,TC能实现吗

------解决方案--------------------------------------------------------
以前有一个exe2com.exe,可以将exe转成com。

------解决方案--------------------------------------------------------
exe2bin也没用
C写的程序里含有大量的附加代码,最小尺寸小不了

------解决方案--------------------------------------------------------
除去可就跑不起来了
------解决方案--------------------------------------------------------
查一下TCC的参数吧,应该可以生成.asm文件的
------解决方案--------------------------------------------------------
C语言转换到bin?把PE头删了吧,只要入口是0100h就行
------解决方案--------------------------------------------------------
tcc -c -mt -S 文件1.c 文件2.c ...
其中-mt表示最小内存模式,即可生成最小的可执行文件。
------解决方案--------------------------------------------------------
如果你只是把.c编译成.asm然后连接成exe或bin的话
你这个程序肯定跑不起来
------解决方案--------------------------------------------------------
探讨

引用:
如果你只是把.c编译成.asm然后连接成exe或bin的话
你这个程序肯定跑不起来

比如我的C源文件为:
main()
{
int a,b,c;

a=1;
b=2;
c=a+b;
}
利用-S得到ASM文件,再经过编译链接,再去除PE头后得到的代码为:

p……

------解决方案--------------------------------------------------------
探讨
引用:

引用:
如果你只是把.c编译成.asm然后连接成exe或bin的话
你这个程序肯定跑不起来

比如我的C源文件为:
main()
{
int a,b,c;

a=1;
b=2;
c=a+b;
}
利用-S得到ASM文件,再经过编译链接,再去除PE头后得到的代码为:

p……

这不……

------解决方案--------------------------------------------------------
探讨
引用:

没关系的,我不在DOS运行,也不在WINDOWS下运行它,所以有用担心它会不会导致系统崩溃的问题

主要是我不知道它为什么会崩溃,因此我想问明白,如果楼上的朋友愿意解释一下的话,甚为感谢。

------解决方案--------------------------------------------------------
探讨
我想tcc是把它当做一个子程序来对待的,所以程序结尾有一个Ret,如果你的直接运行它,最后的ret肯定会出错的!不知对不对?请易水指教

------解决方案--------------------------------------------------------
探讨

引用:
引用:

没关系的,我不在DOS运行,也不在WINDOWS下运行它,所以有用担心它会不会导致系统崩溃的问题

主要是我不知道它为什么会崩溃,因此我想问明白,如果楼上的朋友愿意解释一下的话,甚为感谢。
就是没调中断退出

------解决方案--------------------------------------------------------
gcc有个objcopy 可以把它的.Text段单独复制出来
  相关解决方案