总结:心得体会

既然选择这个行业,选择了做一个程序员,也就明白只有不断学习,积累实战经验才有资格往上走,拿高薪,为自己,为父母,为以后的家能有一定的经济保障。

学习时间都是自己挤出来的,短时间或许很难看到效果,一旦坚持下来了,必然会有所改变。不如好好想想自己为什么想进入这个行业,给自己内心一个答案。

面试大厂,最重要的就是夯实的基础,不然面试官随便一问你就凉了;其次会问一些技术原理,还会看你对知识掌握的广度,最重要的还是你的思路,这是面试官比较看重的。

最后,上面这些大厂面试真题都是非常好的学习资料,通过这些面试真题能够看看自己对技术知识掌握的大概情况,从而能够给自己定一个学习方向。包括上面分享到的学习指南,你都可以从学习指南里理顺学习路线,避免低效学习。

3、MIPS

4、 X86架构 在PC电脑时代占有统治地位

**该指令集是MIPS指令集的一部分,其中执行无符号加法运算的是图中划线的

将2个寄存器中的数进行加法运算结果保存到第三个寄存器中。**

毫无疑问的是任何计算机都必须能够执行算术运算的指令

add a b c 表示把变量a 和 变量 c相加 放入到变量 a中

在MIPS指令中,每条算术指令只执行一个操作,并且有且仅有3个变量。

**例如要将 b 、 c 、d 、e相加后的结果放入到a 中

要执行的指令如下**

add a ,b, c 把b+c 的和放入到a中

add a, a ,d 把a加 d 的和 覆盖原来的 a(其中第2个a,或者第一个a这个时候会用一个单独的寄存器进行保存或者其他方式保存,之力不详细追究)

add a, a ,e

下面将就一条C语言的编译进行展示

例如C语言:

f=(g+h)-(i+j);

那么上面的C编译器将产生什么样的MIPS汇编语言代码?

因为一条MIPS指令仅执行一个操作,所以编译器会把这条C语句编译成多条汇编指令,上面说过一条MIPS指令只能有3个变量,

那么假如从g+h开始

g+h的结果必然需要编译器创建一个临时变量进行储存

变量 t0:

add t0 ,g,h

虽然下面要开始做减法,但是在做减法之前需要先做加法

变量t1:

add t1,i,j

最后做减法指令

sub f,t0,t1

那么在java中为了增强可移植性,java最初被设定为依靠软件解释器执行的语言,什么意思呢:

就是我们操作系统+硬件表示的就是一个美国人

我们java语言所编写的代码(.java文件)经过编译后生成.class文件是个中国人

这个时候中国人和美国人之间语言不通是无法交流的

这个时候我们需要一个翻译进行翻译,翻译从中国人那里知道.class是什么意思后经过他自己认为正确后,经过一定的规则后又把他翻译为英语

美国人拿到这个英语后,他说他读懂了,他照着这个,就去办事了,也就是这个时候我们电脑读懂了,进行相应的操作。

解释器的指令集称作为java字节码,他与MIPS指令集有很大不同,为了使性能与等效功能的C程序接近,java系统现在典型的做法是将字节码编译成类似MIPS这样的机器指令。因为通常java完成编译的时间迟于C,所以java编译器称为即时编译器

下面解释下MIPS汇编语言转化为机器指令的原理

add t 0 , t0, t0,s1,$s2

计算机中的硬件操作数?