我遇到了Visual Studio問題,它無法識別asm中的「byte ptr」。有誰知道我應該用什麼來代替?我使用visual studio是因爲我只是想在C++代碼旁邊做一些asm來加速一些事情。所以任何人也可以檢查代碼,因爲我不確定返回(這只是一個測試)。這是否也適用於uint?Visual Studio中的彙編
__declspec(naked) void bewerken(int letter)
{
__asm
{
push ebp
mov ebp, esp
sub esp, 1 // ruimte maken voor 1 variabele van 1 byte
mov byte ptr [eax], [ebp+8]
mov esp, ebp
pop ebp
ret
}
}
int _tmain(int argc, _TCHAR* argv[])
{
char* bYte;
int letter;
printf_s("Voer een letter in:\n");
letter = getchar();
if (letter < 128)
{
__asm
{
push letter
call bewerken
add esp, 4
mov byte ptr bYte, eax
}
}
else
{
printf_s("Te hoog.\n");
}
getchar();
return 0;
}
注: 「BYTE PTR」 不編譯任
如果您使用MSVC內聯彙編提高性能,您將需要使用比此更大的塊。已知MSVC程序集有很多啓動和結束開銷,因爲所有操作數都必須通過內存傳入。 – Mysticial
嘗試使用'mov al,byte ptr [esp + 8]'你可能首先根據你如何使用eax來做'xor eax,eax'。編輯:另外我不認爲這裏應該有太多的開銷,由於裸露的功能,我已經使用了它們很多,並且從未見過Mysticial正在討論的開銷。用於'debug.exe'的 – user1520427