汇编获取二进制

文章目录


AT&T

  • mov_test.s
c 复制代码
mov $0,%r8d
  • gcc -c mov_test.s 输出 mov_test.o,
  • objdump -D mov_test.o 查看 mov_test.o:
c 复制代码
mov_test.o:     file format elf64-x86-64


Disassembly of section .text:

0000000000000000 <.text>:
   0:   41 b8 00 00 00 00       mov    $0x0,%r8d
  • mov_.S
cpp 复制代码
mov %r8d,0
nop
  • 执行命令: gcc -c mov_.S 会输出 mov_.o 文件:
  • objdump -D mov_.o :
c 复制代码
mov_.o:     文件格式 elf64-x86-64

Disassembly of section .text:

0000000000000000 <.text>:
   0:   44 89 04 25 00 00 00    mov    %r8d,0x0
   7:   00 
   8:   90                      nop
  • main.c:
c 复制代码
void main() {
}
  • 执行命令: gcc -S main.c 输出文件 main.s
  • main.s:
c 复制代码
       .file   "main.c"
        .text
        .globl  main
        .type   main, @function
main:
.LFB0:
        .cfi_startproc
        pushq   %rbp
        .cfi_def_cfa_offset 16
        .cfi_offset 6, -16
        movq    %rsp, %rbp
        .cfi_def_cfa_register 6
        nop
        popq    %rbp
        .cfi_def_cfa 7, 8
        ret
        .cfi_endproc
.LFE0:
        .size   main, .-main
        .ident  "GCC: (Uos 8.3.0.3-3+rebuild) 8.3.0"
        .section        .note.GNU-stack,"",@progbits
  • doubao.s:
c 复制代码
section .text
    global _start

_start:
    ; 将 0 存入 r8d 寄存器
    mov r8d, 0

    ; 退出程序
    mov eax, 1
    xor ebx, ebx
    int 0x80    

asm

  • asm_test.c:
c 复制代码
#include <stdio.h>

int main() {
    int num = 10;
    __asm__ (
        "movl %1, %%eax\n\t"
        "movl %%eax, %0\n\t"
        : "=m" (num)
        : "r" (num)
        : "%eax"
    );
    printf("The value of num is: %d\n", num);
    return 0;
}

Intel

  • Intel 语法 mov_test.s 应改为
c 复制代码
mov  r8d,0
  • asm_test.c , 指定使用 Intel 语法,需要执行 gcc -masm=intel -S asm_test.c
相关推荐
半杯咖啡半行码1 天前
STM32之ARM通用汇编指令详解:从指令格式到寻址方式
汇编·arm开发·stm32
Seeing51 天前
音乐111111
汇编
Funlang1 天前
从汇编到Fun语言
汇编
l1t1 天前
DeepSeek总结的有符号、无符号、未对齐:从汇编到 SQL 的教训
汇编·数据库·sql
Hi202402177 天前
同一个 NMS 算子,两种语言实现:CUDA C 与 Rust 生成 LLVM IR 和 Vortex 汇编的差异
c语言·汇编·rust·gpgpu·vortex·cudac
lhbweilai7 天前
深挖FreeRTOS内核实现(二)
c语言·汇编·stm32·单片机
水饺编程7 天前
第1章:开发环境搭建,在 Windows 中安装 VS 2019
linux·c语言·汇编·visual studio
水饺编程8 天前
第1章:下载 Linux 0.12 内核
linux·c语言·汇编·ubuntu
水饺编程8 天前
第1章:开发环境搭建,在 Windows 中安装 Git
linux·c语言·汇编·git·ubuntu
水饺编程9 天前
第1章:在 Windows 中安装 GCC 套件
c语言·汇编