关于将x86程序集从基于模式转换为间接寻址模式的简短问题吗?
我完全是汇编程序设计的初学者...
基于模式:
pushl -8(%ecx)
间接寻址模式:
所以原则上我想我必须在任何地方减去8,然后再做任何事情。但是我实际上不知道要先推/减什么,先推什么(推子或subl)以及为什么。
subl $8, %esp
pushl %ecx
我尝试了一下,现在工作正常,但是我不知道为什么。
为什么我必须从堆栈指针中减去而不是从ecx
中减去?
我以为每个pushl
的堆栈指针都会自动设置为新的推送地址?
谁能简要概述这种情况/堆栈指针的用法?在这里要考虑什么重要?有人为初学者准备了整齐的床单吗?