编译源码遇见汇编语言怎么办(编译器 汇编)
本文目录一览:
- 1、从C语言源程序到汇编语言程序,C语言编译器完成何种处理?
- 2、keil C51调试的时候发现c语言编译出来的汇编语言不是我所需要的,怎么修改方便
- 3、在调试C程序时突然会跳至汇编语言里去怎么解决
- 4、编译linux代码时,汇编语言怎么办
从C语言源程序到汇编语言程序,C语言编译器完成何种处理?
编译器就是把高级语言转换成机器语言,就是二进制代码。
汇编语言可以说是机器语言的助记符,转换比较容易,基本上就是二进制直接替换。
高级语言就复杂了,转换起来很是麻烦,并且需要优化,所以编译器是个大的软件工程。
keil C51调试的时候发现c语言编译出来的汇编语言不是我所需要的,怎么修改方便
有难度。你要总结一些这方面的经验。
C编译的时候。会多出一些东西来是正常的。因为编译器不是针对某一个MCU来做的。所以,它在编译的时候往往会参考INTEL的芯片结构来做。
你可以找一些C语言编译优化等资料来看看。写程序的时候,把运算的代码尽可能的分行来写,特别是IF等语句不要执行带运算的判断。少一个跳转的情况。尽量的少使用乘除法。改用移位来实现。慢慢的你就会做到了!
在调试C程序时突然会跳至汇编语言里去怎么解决
楼主你好!
楼主对汇编一点不懂的话,很难学好C的,建议平时看一下汇编语言。
楼主没有给出所用的C编译器的软件名称,所以本人泛泛说一下。
一部分C集成环境在调试时,会生成带有调试信息的可执行文件,这样在调试时会根据C源代码进行一步步的执行,但对于一些系统级的调用,如果单步调试的话,会进入其中的子程序,这样只能是用汇编语言(有对应机器码)
如果没有生成高级语言调试信息的话,那肯定只能是用汇编语言调试
而有的的编译器则只能进行汇编语言级的调试
所以楼主这种情况是正常的、常见的,楼主应该附带看一下汇编语言和操作系统、内存储器这样的基本知识。
喜欢楼主能够得到提高。
编译linux代码时,汇编语言怎么办
1. 如果使用gcc编译汇编文件的话, 使用main符号作为入口( gcc -o a.out a.S)
2. 如果使用as和ld命令编译汇编的话, 使用_start符号作为入口( as test.S -o test.o; ld test.o -o a.out)
以上生成两个文件都是ELF格式的可执行文件, 只不过第一个会自动添加一些环境的初始化代码. 对于ELF文件可以通过objcopy命令来得到干净的二进制文件. 命令如下:
objcopy -S -O binary -j .text a.out a.bin (-S : 去掉调试符号, -O binary 生成原始二进制文件, -j .text 只保留.text段)