zoukankan      html  css  js  c++  java
  • 64位linux 汇编

    c源码:testg.c

    1 #include<stdio.h>               
    2                                  
    3 #define sum(a, b) a + b           
    4                                   
    5 int main(int argc,char **argv)   
    6 {                                
    7     int num = sum(1,2);         
    8     printf("num =%d ", num);  
    9                                   
    10     return0;                   
    11
    使用命令:gcc -S testg.c

    寄存器:8位:al,ah

    16位:ax

    32位:eax

    64位:rax 新增(r8-r15寄存器,低32位r8d-r15d,低16位r8w-r15w,低8位r8b-r15b)

    操作符标示:8位:b

    16位:w

    32位:l

    64位:q


    1        .file   "testg.c"
    2         .section        .rodata
    3 .LC0:
    4         .string "num = %dn"
    5         .text
    6         .globl  main
    7         .type   main, @function
    8 main:
    9 .LFB0:
    10         .cfi_startproc
    11         pushq   %rbp
    12         .cfi_def_cfa_offset16
    13         .cfi_offset6, -16
    14         movq    %rsp, %rbp
    15         .cfi_def_cfa_register6
    16         subq    $32, %rsp
    17         movl    %edi, -20(%rbp)
    18         movq    %rsi, -32(%rbp)
    19         movl    $3, -4(%rbp)
    20         movl    -4(%rbp), %eax
    21         movl    %eax, %esi
    22         movl    $.LC0, %edi
    23         movl    $0, %eax
    24         call    printf
    25         movl    $0, %eax
    26         leave
    27         .cfi_def_cfa7, 8
    28         ret
    29         .cfi_endproc
    30 .LFE0:
    31         .size   main, .-main
    32         .ident  "GCC: (GNU)5.1.0"
    33         .section        .note.GNU-stack,"",@progbits
          

    linux系统中64位汇编和32位汇编的系统调用主要有以下不同:

    (1)系统调用号不同.比如x86中sys_write是4,sys_exit是1;而x86_64中sys_write是1, sys_exit是60。linux系统调用号实际上定义在/usr/include/asm/unistd_32.h和/usr/include/asm/unistd_64.h中。
    (2)系统调用所使用的寄存器不同,x86_64中
    使用与eax对应的rax传递系统调用号,但是  
    x86_64中分别使用rdi/rsi/rdx传递前三个参数,而不是x86中的ebx/ecx/edx。
    (3)系统调用使用“syscall”而不是“int 80”。

  • 相关阅读:
    文件夹选项查看显示所有文件和文件夹..确定后隐藏文件依然不能显示,.
    加速电脑启动,给电脑瘦身
    进行性肌营养不良症的治疗
    可变量程的直流电压表
    数字图象处理课件 下载
    两顾高楼
    技巧心得:给拥有Google AdSense 帐户 朋友的一点忠告
    进行性肌营养不良研究又有新的发现
    电子通讯系统 >> BAS系统在地铁环境控制中的应用及实现
    J2ME游戏开发中时钟的简单实现
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/6823155.html
Copyright © 2011-2022 走看看