我正在阅读以下关于操作系统的系列讲义:
http://williamstallings.com/Extras/OS-Notes/h3.html
在这里尝试解释不同的结果时,线程程序可以产生它,打破了函数的执行,并说出以下行:
“sum首先将a的值读入寄存器。然后递增寄存器,然后将寄存器的内容存储回a。然后将控制字符串p和a的值读入寄存器它用于将参数传递给printf例程。然后调用printf,打印出数据“
我完全不知道函数在寄存器级别是如何执行的,同时我不知道应该学习哪个主题来了解它。
那么,哪个主题包含寄存器级别和电子电路级别的功能执行? 请详细说明在执行函数期间读取值时堆栈如何递增。 提前谢谢。
答案 0 :(得分:0)
查看assambler代码的建议已经很好了。您可以查找汇编程序指令,并考虑如果在任何指令处线程执行更改为另一个线程会发生什么。
看看这段代码
la a, %r0
ld [%r0],%r1
add %r1,1,%r1
st %r1,[%r0]
ld [%r0], %o3 ! parameters are passed starting with %o0
mov %o0, %o1
la .L17, %o0
call printf
在前四行(a ++)中,执行的可能性有不同的可能性。你不知道是否首先调用sum(1)或sum(0)。
为了更深入地了解正在进行的工作,我建议您查看计算机组织'。请参阅此链接Computer Organisation WikiBook。