gpt4 book ai didi

c - 在 Visual Studio 中组装

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:27 24 4
gpt4 key购买 nike

我在使用 Visual Studio 时遇到问题,它无法识别 asm 中的“byte ptr”。有谁知道我应该用什么代替?我使用 visual studio 是因为我只是想在 c++ 代码旁边做一些 asm 来加快速度。所以任何人都可以检查代码,因为我不确定返回(这只是一个测试)。这对 in 也适用于 uint 吗?

__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”也不编译

最佳答案

没有有效的寻址模式mov whatever [eax], [ebp+8]

可以mov al, [ebp+8]mov ax,[ebp+8]mov eax,[ebp+8]mov rax,[ebp+0x132220],但也可以将立即数移动到具有立即数偏移量的地址。那将是唯一需要显式宽度属性的情况:mov byte ptr 0x01,[ebp+8] 至少在 debug.exe 时代它是这样工作的...

在所有其他情况下,操作的宽度应该是明确的。

关于c - 在 Visual Studio 中组装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13056144/

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