- 博客(4)
- 收藏
- 关注
原创 在MIPS中实现原子操作
在这个过程中,由于+1这个操作不是原子的,导致A的操作被B覆盖了,如果我们将这个+1的操作原子化,将取数据,+1,放回数据合并成一个不可再分的原子化操作,那么我们就可以避免数据冲突。在上述代码中,我们先从s0中取出一个数,然后自加1后用sc放入原寄存器,若在此过程中没有其他处理器修改过该内存,则t0为1,执行成功。否则t0为0,跳转到again重新执行,在这个过程中,自加1操作不再可分。与普通的加载指令(如LW)不同,LL指令还会在内部记录加载的内存地址和对应的数据,为后续的SC指令做准备。
2024-03-26 17:49:45
461
原创 MIPS中的字符与字符串
另外的一点区别是,C字符串以空字符’\0’来标示字符串的结束,但是Java中的字符串是没有结束符的。含义:将栈指针sp指向的寄存器的最右边的16位放入s0中最右边的16位,并将取到的16位中的最高位(符号位)填充到左16位中的每一位。含义:将栈指针sp指向的寄存器的最右边的8位放入s0中最右边的8位,并将取到的8位中的最高位(符号位)填充到左24位中的每一位。含义:将栈指针sp指向的寄存器的最右边的16位放入s0中最右边的16位,没有符号位的扩展。示例:lhu $s0,0($sp)
2024-03-26 17:08:53
218
原创 从高级语言到汇编语言(MIPS)
C语言是如何转化为汇编语言的?这一步在电脑中是由汇编程序完成的,但是了解C语言到汇编语言的转换过程有利于我们更好的编写出性能更加优异的程序,在这一片文章中我将逐步介绍从C到MIPS的核心思想和实现步骤。
2024-03-24 21:43:34
1055
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人