這是我的函數的彙編代碼。 這是用gcc -02 -fsanitize =未定義溢出時,%rbx,%rsi會做什麼?
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>
我明白,當溢出1a中除了發生,它跳轉到2C運行。然而,在2c之後,mov%rbx,%rsi和mov $ 0x0,%edi做了什麼? 他們需要在那裏嗎?
託尼,停止編輯問題的主體。沒有代碼,這是一個不完整和無用的問題,應該刪除。如果您需要編輯,請同時輸入新內容。如果您有不同的問題,請發佈新的問題 –