gpt4 book ai didi

assembly - 将 1 字节参数传递给函数?

转载 作者:行者123 更新时间:2023-12-02 19:03:05 25 4
gpt4 key购买 nike

我想创建一个接收 1 字节参数的函数。但我读到在 x86 中我只能将 2 或 4 个字节压入堆栈。那么我是否应该期望将 2 个字节的参数传递给我的函数,然后提取我的 1 个字节?这是将 1 字节参数传递给我的函数的方法:

push WORD 123

最佳答案

堆栈必须对齐。如果编写 16 位实模式程序,堆栈必须按 16 位对齐。如果您编写 32 位保护模式程序,则堆栈必须在 32 位上对齐。

但是您不需要将 1 个字节恰好传递给函数。只需压入 16/32 位,并在函数中仅使用其中的最低 8 位。像这样的事情:

use32
proc MyFunc, .arg32, .arg16, .arg8
begin
mov eax, [.arg32]
mov bx, word [.arg16]
mov cl, byte [.arg8]
ret
endp

Main:
push ecx ; CL is arg8
push ebx ; BX is arg16
push eax ; EAX is arg32
call MyFunc

; Or shortly:
stdcall MyFunc, eax, ebx, ecx

关于assembly - 将 1 字节参数传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27699948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com