Reputation: 7162
Is there any way to inline the source code in dumpbin.exe
like in objdump
?
$ clang.exe -g -O0 .\main.c -o main.exe
$ dumpbin.exe /DISASM /SYMBOLS /LINENUMBERS /OUT:output.asm .\main.exe
Microsoft (R) COFF/PE Dumper Version 14.38.33133.0
Copyright (C) Microsoft Corporation. All rights reserved.
$ Get-Content output.asm | Select-Object -Skip 5802 -First 16
isPrime:
00000001400071E0: 48 83 EC 10 sub rsp,10h
00000001400071E4: 89 4C 24 08 mov dword ptr [rsp+8],ecx
00000001400071E8: C7 44 24 04 02 00 mov dword ptr [rsp+4],2
00 00
00000001400071F0: 8B 44 24 04 mov eax,dword ptr [rsp+4]
00000001400071F4: 3B 44 24 08 cmp eax,dword ptr [rsp+8]
00000001400071F8: 0F 8D 5B 00 00 00 jge 0000000140007259
00000001400071FE: C7 04 24 02 00 00 mov dword ptr [rsp],2
00
0000000140007205: 8B 04 24 mov eax,dword ptr [rsp]
0000000140007208: 3B 44 24 08 cmp eax,dword ptr [rsp+8]
000000014000720C: 0F 8D 32 00 00 00 jge 0000000140007244
0000000140007212: 8B 44 24 04 mov eax,dword ptr [rsp+4]
0000000140007216: 0F AF 04 24 imul eax,dword ptr [rsp]
000000014000721A: 3B 44 24 08 cmp eax,dword ptr [rsp+8]
In objdump
it works perfect:
$ clang -g -O0 main.c -o main
$ llvm-objdump-14 -M intel -S -D main > output.asm
$ sed -n '443,461p' output.asm
0000000000001140 <isPrime>:
; int isPrime(int p) {
1140: 55 push rbp
1141: 48 89 e5 mov rbp, rsp
1144: 89 7d f8 mov dword ptr [rbp - 8], edi
; for (int i=2; i<p; i++) {
1147: c7 45 f4 02 00 00 00 mov dword ptr [rbp - 12], 2
114e: 8b 45 f4 mov eax, dword ptr [rbp - 12]
1151: 3b 45 f8 cmp eax, dword ptr [rbp - 8]
1154: 0f 8d 55 00 00 00 jge 0x11af <isPrime+0x6f>
; for (int j=2; j<p; j++) {
115a: c7 45 f0 02 00 00 00 mov dword ptr [rbp - 16], 2
1161: 8b 45 f0 mov eax, dword ptr [rbp - 16]
1164: 3b 45 f8 cmp eax, dword ptr [rbp - 8]
1167: 0f 8d 2f 00 00 00 jge 0x119c <isPrime+0x5c>
; if (i*j == p) {
116d: 8b 45 f4 mov eax, dword ptr [rbp - 12]
1170: 0f af 45 f0 imul eax, dword ptr [rbp - 16]
1174: 3b 45 f8 cmp eax, dword ptr [rbp - 8]
Upvotes: 1
Views: 90