gpt4 book ai didi

c - 什么是 C 等价物?

转载 作者:太空狗 更新时间:2023-10-29 11:44:50 24 4
gpt4 key购买 nike

如何将这段汇编代码翻译成 C 代码?

程序集:

foo:
dd 1
dd 2
dd 3
dd baa - foo
dw 5
dw 6
; ....
baa:
db 00
db 00
;...

C

struct foo
{
int a;
int b;
int c;
int d;
short e;
shot f;
};

struct baa
{
int a;
int b;
};

然后:

foo f;
baa b;

f.a = 1;
f.b = 2;
f.c = 3;
f.d = ?? // how do I translate this?
f.e = 5;
f.f = 6;

b.a = 0;
b.b = 0;

最佳答案

这里的目的是(可能!)计算 foo 结构的大小。

在“裸”汇编中(没有任何花哨的技巧,如结构),唯一无需手动计数的方法是确定结构的第一个字节和最后一个字节的地址之间的差异,再加上一个。或者,在这种情况下,结构的第一个字节的地址与结构过去的第一个字节的地址之间的差异。

在 C 中,您有 sizeof 运算符,它确定(在编译时)类型实例的大小。这样可以更好地捕捉意图。在你的情况下,你会说

struct foo f;

// ...

f.d = sizeof(struct foo);

或者,

struct foo f;

// ...

f.d = sizeof(f);

关于c - 什么是 C 等价物?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22714511/

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