C visualstudio中的汇编
我对Visual Studio有问题,它无法识别asm中的“字节ptr”。有人知道我应该用什么来代替吗?我使用VisualStudio,因为我只想在C++代码旁边做一点ASM,以加快速度。因此,任何人也可以检查代码,因为我不确定返回(这只是一个测试)。这对in也适用于uint吗C visualstudio中的汇编,c,visual-studio,assembly,C,Visual Studio,Assembly,我对Visual Studio有问题,它无法识别asm中的“字节ptr”。有人知道我应该用什么来代替吗?我使用VisualStudio,因为我只想在C++代码旁边做一点ASM,以加快速度。因此,任何人也可以检查代码,因为我不确定返回(这只是一个测试)。这对in也适用于uint吗 __declspec(naked) void bewerken(int letter) { __asm { push ebp mov ebp, esp su
__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;
}
\uuuu declspec(裸)void bewerken(整数字母)
{
__asm
{
推ebp
电动汽车
子esp,1//ruimte maken voor 1变量van 1字节
mov字节ptr[eax],[ebp+8]
电除尘器
流行ebp
ret
}
}
int _tmain(int argc,_TCHAR*argv[]
{
字符*字节;
整数字母;
打印文件(“信在:\n”);
letter=getchar();
如果(字母<128)
{
__asm
{
推送信
打电话给bewerken
添加esp,4
mov字节ptr字节,eax
}
}
其他的
{
打印文件(“Te hoog.\n”);
}
getchar();
返回0;
}
注意:“字节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时代它是这样工作的
在任何其他情况下,操作的宽度都应清晰。没有有效的寻址模式
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时代它是这样工作的
在任何其他情况下,操作的宽度都应该是清晰的。如果要使用MSVC内联汇编来提高性能,则需要使用比这更大的块。众所周知,MSVC程序集的启动和结束开销很大,因为所有操作数都必须通过内存传入。请尝试
mov al,byte ptr[esp+8]
您可能希望首先执行xor eax,eax
,这取决于您如何使用eax。编辑:另外,由于裸函数,我认为这里不应该有太多的开销,我已经使用了很多,也从来没有见过神秘的开销。如果你使用MSVC内联汇编来提高性能,你需要使用更大的块。众所周知,MSVC程序集的启动和结束开销很大,因为所有操作数都必须通过内存传入。请尝试mov al,byte ptr[esp+8]
您可能希望首先执行xor eax,eax
,这取决于您如何使用eax。编辑:另外,由于裸体功能,我认为这里不应该有太多的开销,我已经用了很多次了,从来没有看到过神秘故事中所说的开销。