问题1:什么是机器语言?
计算机能识别的语言,即010101...。想与计算机打交道要了解他的方式。举例如下表:
加 | 0100 0000 |
减 |
0100 1000 |
乘 |
1111 0111 1110 0000 |
除 | 1111 0111 1111 0000 |
机器语言对于人来说太陌生,不方便理解记忆和操作(要记大量的0和1)。 在机器语言的基础上进行一定的抽象,便于人们理解
问题2:什么是汇编语言?
在机器语言的基础上进行抽象,用指令表示我们要做的事情。 编译器 再将我们的指令转换成机器语言。
加:INC EAX | ---->经过编译器 | 0100 0000 |
减:DEC EAX | 0100 1000 | |
乘:MUL EAX | 1111 0111 1110 0000 | |
除:DIV EAX | 1111 0111 1111 0000 |
3、C语言
汇编语言虽然进行了一定抽象,但是仍然不符合我们人类的思维习惯,理解困难。于是发展出了高级语言
加:A+B | --->经过C语言的编译器 | 0100 0000 |
减:A-B | 0100 1000 | |
乘:A*B | 1111 0111 1110 0000 | |
除:A/B | 1111 0111 1111 0000 |
高级语言的发展和强大,本质上是编译器的发展和强大。编译器替我们做了更多的事情。编译器越是强大,人写代码就越简单,越是符合人的思维习惯。
4、C语言和C++语言的关系
C和C++其实本质上没有什么区别,知识编译器做的事情越来越多越来越强大了。
C语言是学好C++的基础!
站在C编译器的角度上去理解语言。
5、为什么学习汇编?
程序员鄙视链。
理解汇编的人掌握的才是真正的本质。一个不懂汇编的C程序员绝对称不上是高手,充其量就是熟练而已。随便几个问题就搞不定
比如说,返回值,返回值存哪儿?返回值大于4个字节的值存哪儿?返回值大于4个字节不用指针存哪儿?
但是懂汇编的人知道。
一个不懂汇编的C C++程序员,是不会懂暴破的。如果想从事外挂反外挂,病毒反病毒或安全相关的工作,汇编是基础,也是必须要掌握的。
正向开发工程师,懂汇编的话可以比同事做的更好。别人搞不定的问题你能搞定,别人调试不了的程序你能调试。
6、学习环境
VC6,为什么VC6,因为越是新版的编辑器替我们做的事情越多,不利于我们学习细节。
还一点,凡是搞底层的人,开发环境都是VC6。