发信人: nyxi(南野秀一)
整理人: teleme(2004-01-02 16:22:14), 站内信件
|
【 在 maxun_rootshell 的大作中提到:】
:在DELPHI中嵌入汇编代码的时候还需不需要把寄存器里面的数据压入堆栈?谢谢!
:......
寄存器保存预定
过程和函数必须保持EBX、ESI、EDI和EBP寄存器,但可以修改EAX、EDX和ECX寄存器。当在内嵌汇编程序中实现构造器或析构器时,应确认保持DL寄存器。假设过程和函数被调用时,CPU的方向标记是清除的(相应的一个CLD指令),那么必须返回清除的方向标记。
寄存器的使用
通常,寄存器在asm语句中的使用与那些外部的(external)过程或函数相同。asm语句必须保持EDI、ESI、ESP、EBP和EBX等寄存器,但可以自由修改EAX、ECX和EDX寄存器。在asm语句的入口,BP指向当前栈的帧,SP指向栈顶,SS包含了栈段的段地址,DS包含了数据段段地址。除了ESP和EBP之外,asm语句可以假定在语句入口点没有包含任何寄存器信息。
---- 我只能幻想我在牵你的手 带你看遍这世界快乐与哀愁! |
|