曹大,有点汇编问题搞不懂
我在看你写的<<Go语言高级编程>>.这本书的关于汇编章节的书.看到下面这段有点疑惑
这里面的 a的变量为啥不是 a-8(SP)呢? b的话不应该是 b-0(SP)吗?还有 +0(SP)不是指向了栈顶了吗?
因为a变量先定义,因此a变量的地址更小.
栈内存地址不是从大往小吗?为啥a变量先定义地址更小呢?
我按照我的理解画了一张图.
26
收起
正在回答 回答被采纳积分+1
1回答
Xargin
2021-06-08 16:28:59
Go 的汇编有个比较难理解的地方。。。
我们课上之前讲的是通过编译、反编译工具看的汇编,这种情况下看到的 SP 表示的都是物理寄存器,就是那个栈顶
但是在手写汇编的时候,SP 有的时候是指伪寄存器,有的时候是指物理寄存器,这个有一个具体的区分规则,比较蛋疼
我之前写过怎么区分的文章
https://github.com/cch123/golang-notes/blob/master/assembly.md
写的时候差点把自己劝退
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星