实验资料:
https://wwpv.lanzoue.com/b05drqjef
密码:d19t
- 使用txt文档编写下面C源码,文档命名为【学号_hello.c】并使用Mingw工具(是
Minimalist GNU for Windows的缩写)的bin文件夹下gcc.exe带选项编译(),打开文件后截图。
#include<stdio.h>
#define A 1000
int main()
{
printf("hello_%d",A);
return 0;
}
选项 | 生成的文件后缀名 | 打开生成文件截图 |
---|---|---|
gcc.exe -E xx.c | .i | |
gcc.exe -S xx.c | .s | |
gcc.exe -c xx.c | .o | |
gcc.exe xx.c -o xx.exe | .exe | |
gcc.exe xx.c -v | .txt |
注意:第一至四个命令的实际使用参考下图
参考:
GCC编译常用命令
C语言编译 - gcc 编译指令
gcc 编译命令详解及最佳实践
C语言的编译过程详解
步骤一:打开DOS窗口:
按住shift+鼠标右键,选择“在此处打开XXXX窗口”
步骤二:认识Gcc的常用选项
-E *.i 预处理后的文件
-S *.s 汇编文件
-c *.o 目标文件object(二进制)
hello.o + printf.o + math.o = *.exe
printf.o + math.o+… 打包成库文件
-o 指定生成想要的EXE文件名
-v
步骤三:敲以下命令
.\gcc.exe .\2100130499_hello.c -E (显示到屏幕上)
.\gcc.exe .\2100130499_hello.c -E > 2100130499_hello.i (将屏幕上的内容重定向到txt中)
.\gcc.exe .\2100130499_hello.c -v (显示版本信息到屏幕上,无法直接重定向)
.\gcc.exe .\2100130499_hello.c -v 2>&1 > 2100130499_vhello.txt(需要加2>&1再重定向)
.\gcc.exe .\2100130499_hello.c (自动生成可执行文件a.exe)
.\gcc.exe .\2100130499_hello.c -o 改成你的学号.exe (指定生成特定文件名的exe)
注:-c -S 等选项会自动生成
-
用txt文件软件打开【学号_hello.s】汇编文件,将汇编语句的”hello”改成”Kitty”(修改后截图),并使用gcc.exe 学号_hello.s -o 学号_Kitty.exe,在DOS界面中运行学号_Kitty.exe,运行效果截图。
参考截图:
-
拷贝下面1到10的累加C源码到【学号_sum.c】,
(1) 使用gcc.exe 学号_sum.c -O0 -S -o 学号_sum_O0.s,查看生成的文件,截图
(2) 使用gcc.exe 学号_sum.c -O2 -S -o 学号_sum_O2.s,查看生成的文件,截图
(3) 比较-O0和-O2生成的汇编文件中main函数代码行数,截图上分别写明行数。
#include<stdio.h>
int main()
{
int i, sum = 0;
for( i = 1; i < 10; i++)
{
sum += i;
}
printf(“sum=%d”,sum);
return 0;
}
-
下载附件中的“2100130499.exe”。安装并使用ultraEdit软件,强制修改文件将打印的”2100130499”修改成“你自己的学号”,并截图在ultraEdit软件修改的部分(用红色框框定),以及在DOS中修改前1次及修改后2次的运行截图。
附件:2100130499.exe
注释:直接搜索 20130499 ,如下图所示,然后在点击右侧的字符串,修改为自己的学号
-
(实验三内容-有兴趣的同学提前做)下载附件中的“2100130499VIP.exe”。安装并使用ultraEdit软件,强制将修改文件中的if…else分支语句,将”2100130499普通会员”修改成“你自己的学号VIP”,并截图在ultraEdit软件修改的部分(用红色框框定),以及在DOS中修改前1次及修改后2次的运行截图。
请参考 计算机组成原理实验三-修改二进制文件的程序改变最终运行结果 第二个问题