相关疑难解决方法(0)

测试点%eax%eax

可能重复:
x86汇编 - 针对eax的'testl'eax?

我对汇编语言编程非常陌生,我目前正在尝试阅读从二进制文件生成的汇编语言.我跑过去了

 test   %eax,%eax
Run Code Online (Sandbox Code Playgroud)

或者test %rdi, %rdi等等.我很困惑这是做什么的.这些价值不%eax, %eax一样吗?什么是测试?我在某处读到它正在进行AND操作.....但由于它们是相同的值,它不会只返回%eax吗?

以下是我发现此用法的一个实例:

   400e6e:       85 c0                   test   %eax,%eax
   400e70:       74 05                   je     400e77 <phase_1+0x23>
Run Code Online (Sandbox Code Playgroud)

je如果被比较的两个值相等,我认为跳跃......好吧,因为 %eax很好,本身,在什么情况下我们不会跳?

我是一般的编程初学者,所以如果有人能向我解释这一点,我会非常感激.谢谢!

x86 assembly att

122
推荐指数
4
解决办法
15万
查看次数

`testl` eax对抗eax?

我想了解一些装配.

汇编如下,我对该testl行感兴趣:

000319df  8b4508        movl   0x08(%ebp), %eax  
000319e2  8b4004        movl   0x04(%eax), %eax  
000319e5  85c0          testl  %eax, %eax  
000319e7  7407          je     0x000319f0  
Run Code Online (Sandbox Code Playgroud)

我想了解的那点testl之间的%eax%eax?我认为这段代码的具体内容并不重要,我只是试图用自己来理解测试 - 这种价值总是不正确吗?

x86 assembly instructions

114
推荐指数
5
解决办法
8万
查看次数

x86 TEST指令不起作用?

我一直在撞墙撞墙,这对我来说毫无意义......

为什么这个程序进入无限循环?!

我想你可以使用test为相等比较两个值,如图所示这里 ......为什么不工作?

int main()
{
    __asm
    {
        mov EAX, 1;
        mov EDX, EAX;
        test EAX, EDX;
L:      jne L;
    }
}
Run Code Online (Sandbox Code Playgroud)

c x86 assembly

5
推荐指数
1
解决办法
782
查看次数

装配测试说明

我想知道这个操作意味着什么?

Test EDX, 200
Run Code Online (Sandbox Code Playgroud)

DWORD有价值EDX:

1A1B1C00
Run Code Online (Sandbox Code Playgroud)

当我做test EDX, 200 ,然后a JE,跳跃.为什么?EDX不等于200.

我想更多地了解Test EDX, 200意义.

x86 assembly

1
推荐指数
1
解决办法
1万
查看次数

GDB/GNU程序集:测试%esi,%esi返回不相等?

我正在做家庭作业.我们给出了一个预编译的二进制文件,我们必须使用它gdb来获取程序集转储,遍历数据结构,查看存储在内存中的值等,以便弄清楚二进制文件的功能.以下是函数调用的几行反汇编转储:

0x08048e14 <+21>:   test   %esi,%esi
0x08048e16 <+23>:   jne    0x8048e4b <fun6+76>
0x08048e18 <+25>:   jmp    0x8048e5d <fun6+94>
Run Code Online (Sandbox Code Playgroud)

我假设test %esi,%esi总是返回"equals"的结果(或者更确切地说,使用寄存器标志表示的等效语句,我认为只是ZF设置了吗?),并且jne指令永远不会执行,而程序将执行在线指令<+25>.但是,在单步执行这些指令后,程序会跳转到行<+76>!为什么会这样?我很困惑.

如果它有助于解释答案,这里是test在线指令后的寄存器标志<+21>(ZF未设置?)(我仍然不知道如何解释标志):

eflags         0x202    [ IF ]
Run Code Online (Sandbox Code Playgroud)

c assembly gdb disassembly

1
推荐指数
1
解决办法
2595
查看次数

标签 统计

assembly ×5

x86 ×4

c ×2

att ×1

disassembly ×1

gdb ×1

instructions ×1