【发布时间】:2013-10-20 21:21:40
【问题描述】:
这是在 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 值,还是移动整个列表?我很困惑。
【问题讨论】:
-
你希望它在推送后仍然作为链表工作吗?还是您只想按值推送任意结构,而不修复指针?