Я хочу настроить мой отладчик сборки с at & t на intel в gcc. Сейчас я использую ubuntu 18.0. Как я могу это сделать?
Принятие Вас использует 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]
Теперь скомпилируйте последний пример с параметром отладки:
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
файл. Для изменения просто редактируют этот файл.