3.7 汇编例程中的返回值约定

本文详细介绍了在Delphi编程环境中函数返回值的规则。不同类型的数据如何被返回,包括简单的数值类型、实数类型、指针类型以及复杂类型如字符串和动态数组。此外还讨论了在内嵌汇编代码中这些规则的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  在完全汇编例程中,函数必须按如下的规则来返回值:

  • 按照数据类型的长度,序数类型和一些简单类型(例如集合)使用AL、AX或EAX返回。
  • 实数类型通过浮点运算器的寄存器堆栈的ST(0)返回。Currency类型须先放大10000倍。
  • 指针类型、类类型以及类引用类型使用EAX返回。
  • 对于字符串、动态数组、方法指针、变体以及其他一些大小超过4字节的数据类型(例如短字符串、变体等)的返回值来说,返回值是通过在函数声明的参数之后另外传入的变量参数返回的。

  付于最后一条规则,开发人员通常并不需要计算Delphi将如何“另外传入一个变量参数”,而只满要在编代码中通过@Result返回值即u可—Delphi会按照上述的规则完成编译。
  对于内嵌编例程来说,上面的规则完个不适用-——编译器将按Delphi的规则为例程的关键字“Begin..End”成入l与出1l的处理代码,返回值也由例(而非内嵌编代码)处理。而l1,在使用Registry调用约定的例程的内嵌编代码中,EAX、EDX和ECX未必总是例程入[口参数的前三个,因为例程的其他代码可能已经重写了这些寄存器。

转载于:https://www.cnblogs.com/YiShen/p/9881499.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值