OrenIshShalom
OrenIshShalom

Reputation: 7162

dumpbin equivalent for flag -S of objdump

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

Answers (0)

Related Questions