0
我有一个包含一个int
像下面这样的结构从结构指针来:保存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
赋值?
你为什么要做这个问题? –
C不支持_methods_。你有一个_function_。 – Olaf
尝试4编译并在这里工作(Visual Studio 2015),一旦我从'move'中删除了多余的'e'。 –