我有一个包含int
的结构,如下所示:
typedef struct arch
{
int size;
unsigned char *info
} SARCH;
我有一个需要执行以下操作的功能:
void change(SARCH *arch) {
int n;
n = arch-> size;
// Do something with n
}
我只需要将赋值部分转换为汇编。问题是我尝试使用此代码并且不起作用:
ATTEMPT 1
void change(SARCH *arch) {
int n;
_asm {
mov [n], arch.size // THIS LINE
}
}
ATTEMPT 2
void change(SARCH *arch) {
int n;
_asm {
mov eax, arch.size
mov [n], eax // THIS LINE
}
}
ATTEMPT 3
void change(SARCH *arch) {
int n;
_asm {
movsx eax, arch.size
mov [n], eax
}
}
ATTEMPT 4
void change(SARCH *arch) {
int n;
_asm {
mov eax, arch
mov eax, [eax] arch.size
mov [n], eax // THIS LINE
}
}
由于我评论过的行,尝试1,2和4不能编译。尝试3编译并运行,但不会在n
中正确保存值。相反,它会保存另一个数字,例如104而不是7.如何实现int
分配?
答案 0 :(得分:0)
我通过以下方式解决了这个问题
_asm {
mov eax, dword ptr [data]
mov ecx, dword ptr [eax]
mov dword ptr [n],ecx
}