You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

汇编函数参数传递与返回值机制疑问:含寄存器及微软API问题

函数参数传递与寄存器相关疑问解答

EBX(64位模式下为RBX)的作用

在Windows x86-64的调用约定里,RBX属于非易失性寄存器:

  • 这类寄存器的值在函数调用前后需要保持不变——被调用函数如果要用到RBX,必须先把它的原值压栈保存,函数返回前再恢复,不能直接修改后不管,否则会破坏调用者的上下文。
  • 它不负责传递函数参数,前4个参数是用RCX、RDX、R8、R9来传递的,超过4个才会放到栈上。你提供的AddNumber示例里没用到EBX,所以它在这个函数里没有特殊作用,只是一个需要被调用者保留的通用寄存器。

KeRaiseIrqlToDpcLevel的返回值处理

Windows内核函数完全遵循x86-64的调用约定:

  • 整型、指针类型的返回值一律通过RAX寄存器返回。
  • KeRaiseIrqlToDpcLevel会返回调用前的原始IRQL值,这个返回值确实存储在RAX寄存器中。

内容的提问来源于stack exchange,提问作者trapstar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 09:57:02