Assembly 在程序集中查找操作代码/字节
对于这些代码行,我需要找到操作代码、目标代码的字节数以及执行所需的时钟周期数。假设该值引用了内存中的一个字,而Double引用了一个doublewordAssembly 在程序集中查找操作代码/字节,assembly,x86,Assembly,X86,对于这些代码行,我需要找到操作代码、目标代码的字节数以及执行所需的时钟周期数。假设该值引用了内存中的一个字,而Double引用了一个doubleword sub wordOp, ax sub eax,10 add dblOp, 10 add eax,[ebx] 有人能解释一下我如何获得代码行的这些值吗?我不知道这是否有帮助,但似乎您需要做的就是将此代码放入\u asm子句中: void main() { short a; long b; __asm {
sub wordOp, ax
sub eax,10
add dblOp, 10
add eax,[ebx]
有人能解释一下我如何获得代码行的这些值吗?我不知道这是否有帮助,但似乎您需要做的就是将此代码放入
\u asm
子句中:
void main()
{
short a;
long b;
__asm
{
sub a,ax
sub eax,10
add b,10
add eax,[ebx]
}
}
然后,在\u asm
子句的第一行上放置一个断点,并在调试模式下运行程序。然后,右键单击文本,并选择“转到反汇编”,这将显示以下内容:
sub a,ax
0030139E sub word ptr [a],ax
sub eax,10
003013A2 sub eax,0Ah
add b,10
003013A5 add dword ptr [b],0Ah
add eax,[ebx]
003013A9 add eax,dword ptr [ebx]
...
003013AB
当然,上面的地址在我的本地程序中,但是代码的大小可以很容易地计算为0x003013AB-0030139E=D,即13个字节
顺便说一句,我不确定
短a
和长b
(它也可以是intA
和双b
),所以你需要问给你这个任务的人wordOp
和dblOp的确切含义。我喜欢这个在线汇编程序:
但是时钟周期的数量取决于cpu架构
Dirk汇编语言(以及通常的操作码)取决于底层平台(编译器、CPU等)。您使用的是什么平台?英特尔80X86。或者我需要更具体一点吗?编译器(或者至少,您使用的是什么IDE,是Visual Studio吗)?是的,Visual Studio需要编译it@dwelch:是否将文件保存为.s
并编译?