Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature request] Indicate relocations in assembler listing #106

Open
ecm-pushbx opened this issue May 17, 2022 · 1 comment
Open

[Feature request] Indicate relocations in assembler listing #106

ecm-pushbx opened this issue May 17, 2022 · 1 comment

Comments

@ecm-pushbx
Copy link

This is an example assembly listing file output using gcc-ia16 with appropriate parameters: (Copied from my other issue earlier today.)

$ cat hello.c

#include "stdio.h"

void main(void) {
        printf("Hello world!\n");
}
$ ia16-elf-gcc -o hello.com hello.c -g -Wa,-anlhd=hello.lst,-L -masm=intel
cc1: warning: target system does not support debug output
$ cat hello.lst
   1                            .arch i8086,jumps
   2                            .code16
   3                            .intel_syntax noprefix
   4                    #NO_APP
   5                            .section        .rodata
   6                    .LC0:
   7 0000 48656C6C              .string "Hello world!"
   7      6F20776F
   7      726C6421
   7      00
   8                            .text
   9                            .global main
  11                    main:
  12 0000 55                    push    bp
  13 0001 89E5                  mov     bp,     sp
  14 0003 B80000                mov     ax,     offset .LC0
  15 0006 50                    push    ax
  16 0007 16                    push    ss
  17 0008 1F                    pop     ds
  18 0009 E8FEFF                call    puts
  19 000c 83C402                add     sp,     2
  20 000f 90                    nop
  21 0010 5D                    pop     bp
  22 0011 16                    push    ss
  23 0012 1F                    pop     ds
  24 0013 C3                    ret
  26                            .ident  "GCC: (GNU) 6.3.0"
$

This is how NASM's -f bin output format indicates relocations in the listing, note the square brackets:

$ cat bye.asm

        cpu 8086
        org 256
start:
        mov dx, message
        mov ah, 09h
        int 21h
        mov ax, 4C00h
        int 21h

message:
        db "Goodbye world!",13,10,36
$ nasm bye.asm -o bye.com -l bye.lst
$ cat bye.lst
     1
     2                                          cpu 8086
     3                                          org 256
     4                                  start:
     5 00000000 BA[0C00]                        mov dx, message
     6 00000003 B409                            mov ah, 09h
     7 00000005 CD21                            int 21h
     8 00000007 B8004C                          mov ax, 4C00h
     9 0000000A CD21                            int 21h
    10
    11                                  message:
    12 0000000C 476F6F646279652077-             db "Goodbye world!",13,10,36
    12 00000015 6F726C64210D0A24
$

I want the square brackets so as to help my trace listing program to identify the current instruction. Here's the logic (sorry for unreadable perl code) to skip over bytes sent from the debugger if they appear to match up to listing file opcode bytes enclosed in square brackets.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants