这是 y86(类似于 x86 的汇编架构,但缺少很多指令),但这应该是有道理的。我正在尝试将整个链表推入堆栈,链表看起来像这样..
.align 4
ele1:
.long 0x00a
.long ele2
ele2:
.long 0x0b0
.long ele3
ele3:
.long 0xc00
.long 0
我想知道如何将它推入堆栈,我很确定这会做到..
.pos 0
init:
irmovl Stack,%esp
rrmovl %esp,%ebp
irmovl ele1,%edx
pushl %edx
call Main
halt
.align 4
ele1:
.long 0x00a
.long ele2
ele2:
.long 0x0b0
.long ele3
ele3:
.long 0xc00
.long 0
Main:
pushl %ebp
rrmovl %esp,%ebp
irmovl ele1, %eax
pushl %eax
irmovl ele2, %eax
pushl %eax
irmovl ele3, %eax
pushl %eax
.pos 0x200
Stack:
#end of code
我想知道的是如何推送任何大小的链表。我知道每个元素中的第二个 long 是下一个元素的内存位置,对吗?我如何获得该值,我的意思是 irmovl ele1, %eax 不只是移动长 0x00a 值,还是移动整个列表?我很困惑。