Assembly 当溢出时,移动%rbx,%rsi做什么?

Assembly 当溢出时,移动%rbx,%rsi做什么?,assembly,optimization,x86-64,Assembly,Optimization,X86 64,这是我的函数的汇编代码。 这是在gcc-O2-fsanitize=未定义的情况下运行的 0: 55 push %rbp 1: 53 push %rbx 2: 48 ba ff ff ff ff ff movabs $0x7fffffffffffffff,%rdx 9: ff ff 7f c: 48 83 ec 08 sub

这是我的函数的汇编代码。 这是在gcc-O2-fsanitize=未定义的情况下运行的

   0:   55                      push   %rbp
   1:   53                      push   %rbx
   2:   48 ba ff ff ff ff ff    movabs $0x7fffffffffffffff,%rdx
   9:   ff ff 7f
   c:   48 83 ec 08             sub    $0x8,%rsp
  10:   48 8b 1d 00 00 00 00    mov    0x0(%rip),%rbx        # 17 <testovf+0x17>
  17:   48 89 dd                mov    %rbx,%rbp
  1a:   48 01 d5                add    %rdx,%rbp
  1d:   70 0d                   jo     2c <testovf+0x2c>
  1f:   48 39 eb                cmp    %rbp,%rbx
  22:   0f 9f c0                setg   %al
  25:   48 83 c4 08             add    $0x8,%rsp
  29:   5b                      pop    %rbx
  2a:   5d                      pop    %rbp
  2b:   c3                      retq
  2c:   48 89 de                mov    %rbx,%rsi
  2f:   bf 00 00 00 00          mov    $0x0,%edi
  34:   e8 00 00 00 00          callq  39 <testovf+0x39>
  39:   eb e4                   jmp    1f <testovf+0x1f>
0:55推送%rbp
1:53推送%rbx
2:48 ba ff ff ff movabs$0x7fffffffffffffff,%rdx
9:ff 7f
c:48 83 ec 08分$0x8,%rsp
10:48 8b 1d 00 mov 0x0(%rip),%rbx#17
17:48 89日折旧率变动%rbx,%rbp
1a:48 01 d5添加%rdx,%rbp
1d:70 0d jo 2c
1f:48 39 eb cmp%rbp%rbx
22:0f 9f c0设定值%al
25:48 83 c4 08添加$0x8,%rsp
29:50亿波普%rbx
2a:5d pop%rbp
2b:c3-retq
2c:48 89移动百分比rbx,%rsi
2f:bf 00 mov$0x0,%edi
34:e8 00 00 callq 39
39:eb e4 jmp 1f
我知道当1a发生溢出时,它会跳到2c。 然而,在2c之后,mov%rbx、%rsi和mov$0x0、%edi做什么?
他们需要在那里吗?

在地址
34
您有一个
callq
到外部函数。您询问的两条指令设置该函数的参数,根据标准的64位调用约定,这些参数在寄存器
rdi
rsi
中传递


请注意,调用的目标显示为
39
,但这并不正确。机会是,您从objdump获得此列表,但忘记使用将显示重定位条目的
-r
选项。

当我使用-r选项时,添加到代码中的内容只有:30:r\u X86\u 64\u 32。data+0x20 34:e8 00 00 callq 39 35:r\u X86\u 64\u PC32__ubsan\u handle\u add\u overflow-0x4 39:eb e4 jmp 1f您知道它的意思吗?是的,它向您显示了调用的函数实际上是
\u ubsan\u handle\u add\u overflow
。Tony,停止编辑问题的主体。没有代码,这是一个不完整和无用的问题,应该删除。如果要进行编辑,请同时输入新内容。如果您有不同的问题,请发布新问题