Code:
1. . text
2. . align 2
3. . p2align 4, 15
4. . globl f (const int &)
5. . type f (const int &), @ function
6. f (const int &):
7. . LFB1428:
8. push% ebp
9. . LCFI7:
10. mov% ebp,% esp
11. . LCFI8:
12. sub% esp, 40
13. . LCFI9:
14. mov DWORD PTR [% ebp-4],% edi
15. . LCFI10:
16. mov% edi, DWORD PTR [% ebp +8]
17. mov DWORD PTR [% ebp-8],% esi
18. . LCFI11:
19. % lea esi, [% ebp-13]
20. mov DWORD PTR [% ebp-12],% ebx
21. . LCFI12:
22. mov% ebx, DWORD PTR [edi%]
23. mov DWORD PTR [% esp +8], 4
24. mov DWORD PTR [% esp +4], OFFSET FLAT:. LC0
25. mov DWORD PTR [% esp], OFFSET FLAT: std:: court
26. call std:: basic_ostream <char, std:: char_traits <char>> & std:: __ostream_insert <char, std:: char_traits<char>> (std:: basic_ostream <char, std:: char_traits <char>> &, char const *, int)
27. mov DWORD PTR [% esp +4],% ebx
28. mov DWORD PTR [% esp], OFFSET FLAT: std:: court
29. call std:: basic_ostream <char, std:: char_traits <char>>:: operator <<(int)
30. mov DWORD PTR [% esp +4],% esi
31. mov BYTE PTR [% ebp-13], 10
32. mov DWORD PTR [% esp +8], 1
33. mov DWORD PTR [% esp],% eax
34. call std:: basic_ostream <char, std:: char_traits <char>> & std:: __ostream_insert <char, std:: char_traits<char>> (std:: basic_ostream <char, std:: char_traits <char>> &, char const *, int)
35. mov DWORD PTR i, 42
36. mov% ebx, DWORD PTR [edi%]
37. mov DWORD PTR [% esp +8], 4
38. mov DWORD PTR [% esp +4], OFFSET FLAT:. LC0
39. mov DWORD PTR [% esp], OFFSET FLAT: std:: court
40. call std:: basic_ostream <char, std:: char_traits <char>> & std:: __ostream_insert <char, std:: char_traits<char>> (std:: basic_ostream <char, std:: char_traits <char>> &, char const *, int)
41. mov DWORD PTR [% esp +4],% ebx
42. mov DWORD PTR [% esp], OFFSET FLAT: std:: court
43. call std:: basic_ostream <char, std:: char_traits <char>>:: operator <<(int)
44. mov DWORD PTR [% esp +4],% esi
45. mov BYTE PTR [% ebp-13], 10
46. mov DWORD PTR [% esp +8], 1
47. mov DWORD PTR [% esp],% eax
48. call std:: basic_ostream <char, std:: char_traits <char>> & std:: __ostream_insert <char, std:: char_traits<char>> (std:: basic_ostream <char, std:: char_traits <char>> &, char const *, int)
49. mov% ebx, DWORD PTR [% ebp-12]
50. mov% esi, DWORD PTR [% ebp-8]
51. mov% edi, DWORD PTR [% ebp-4]
52. mov% esp,% ebp
53. pop% ebp54. ret
It is clear that dereferences what is past (DWORD PTR [edi%]). (g + +-O2-masm = intel-S then the result is passed in c + + filt for demangle names)
Bookmarks