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'。 –