Установить отладчик с at & t на Intel [закрыто]

Я хочу настроить мой отладчик сборки с at & t на intel в gcc. Сейчас я использую ubuntu 18.0. Как я могу это сделать?

0
задан 9 July 2018 в 03:28

1 ответ

Вывод ассемблера GCC в синтаксисе Intel

Принятие Вас использует gcc, у Вас есть флаг, названный-masm=dialect

Из руководства gcc:

-masm=dialect
       Output assembly instructions using selected dialect.  Also
       affects which dialect is used for basic "asm" and extended "asm".
       Supported choices (in dialect order) are att or intel. The
       default is att. Darwin does not support intel.

Для получения синтаксиса Intel, необходимо скомпилировать с

gcc -S -masm=intel adder.c

Здесь у меня есть небольшой пример:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
    int a = atoi(argv[1]), b = atoi(argv[2]);
    int sum=0;

    sum = a+b;
    printf("%d + %d = %d\n", a, b, sum);

    return 0;
 }

Сохраните это как adder.c и скомпилируйте его

gcc adder.c -o adder 

и протестируйте программу с

./adder 1 4

Вывод должен быть

1 + 4 = 5

Теперь сделайте Intel asm файлом с

gcc -S  -masm=intel adder.c

Здесь первые строки adder.s

.file   "adder.c"
    .intel_syntax noprefix
    .text
    .section    .rodata
.LC0:
     .string    "%d + %d = %d\n"
     .text
     .globl main
     .type  main, @function
main:
.LFB5:
    .cfi_startproc
    push    rbp
    .cfi_def_cfa_offset 16
    .cfi_offset 6, -16
    mov rbp, rsp
    .cfi_def_cfa_register 6
    sub rsp, 32
    mov DWORD PTR -20[rbp], edi
    mov QWORD PTR -32[rbp], rsi
    mov rax, QWORD PTR -32[rbp]
    add rax, 8
    mov rax, QWORD PTR [rax]

Используя синтаксис Intel в GDB

Теперь скомпилируйте последний пример с параметром отладки:

gcc -g adder.c -o adder

Откройте отладчик гну

gdb -q --args ./adder 3 5 

и набор разновидность

set disassembly-flavor intel

установите повреждение в основном

b main

и запущенный программа

r

Если Вы вводите теперь

disassemble

Вы получите код в стиле Intel:

(gdb) disassemble 
Dump of assembler code for function main:
   0x000055555555468a <+0>:     push   rbp
   0x000055555555468b <+1>:     mov    rbp,rsp
   0x000055555555468e <+4>:     sub    rsp,0x20
   0x0000555555554692 <+8>:     mov    DWORD PTR [rbp-0x14],edi
   0x0000555555554695 <+11>:    mov    QWORD PTR [rbp-0x20],rsi
=> 0x0000555555554699 <+15>:    mov    rax,QWORD PTR [rbp-0x20]
   0x000055555555469d <+19>:    add    rax,0x8
   0x00005555555546a1 <+23>:    mov    rax,QWORD PTR [rax]

Для установки разновидности назад, необходимо возвратить его к стилю AT&T:

set disassembly-flavor att
  • Для постоянного получения синтаксиса Intel в gdb введите следующее в оболочке:

    echo "set disassembly-flavor intel" >> ~/.gdbinit
    

Это установит свойство на Ваш .gdbinit файл. Для изменения просто редактируют этот файл.

2
ответ дан 28 October 2019 в 23:21

Другие вопросы по тегам:

Похожие вопросы: