gpt4 book ai didi

c++ - 在内联汇编中访问 C 结构成员

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:54:36 26 4
gpt4 key购买 nike

在下面的代码中,rEDX、rEBX、rEBP、rESI 和 rEDI 是结构体 scratch_space 的成员。 scratch_space_arg 是结构scratch_space 的对象。

lea eax, scratch_space_arg
mov [ecx+[eax].rEDX], edx
mov [ecx+[eax].rEBX], ebx
mov [ecx+[eax].rEBP], ebp
mov [ecx+[eax].rESI], esi
mov [ecx+[eax].rEDI], edi

这段代码给了我一个:

error C2426: '[' : illegal operator in 'first operand'

对于所有 mov 语句。知道我该如何解决这个问题吗?

PS:我用了this article访问 struct 成员。

最佳答案

我建议反汇编一些引用结构元素的 C 代码:

struct scratch_space scratch_space_arg = { 0, 0, 0, 0, 0 };
int rEDX = scratch_space_arg.rEDX;
int rEBX = scratch_space_arg.rEBX;
int rEBP = scratch_space_arg.rEBP;
int rESI = scratch_space_arg.rESI;
int rEDI = scratch_space_arg.rEDI;
printf("%d %d %d %d %d\n", rEDX, rEBX, rEBP, rESI, rEDI);

然后您就会知道自己使用的正确符号。

关于c++ - 在内联汇编中访问 C 结构成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11822151/

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