zoukankan      html  css  js  c++  java
  • 2019-2020-1 20199312《Linux内核原理与分析》第二周作业

    c语言代码

    
    // main.c
    int g(int x)
    {
        return x + 4;
    }
    
    int f(int x)
    {
        return g(x);
    }
    
    int main(void)
    {
        return f(6) + 2;
    }
    
    

    反编译后汇编代码

    	.file	"main.c"
    	.text
    	.globl	g
    	.type	g, @function
    g:
    .LFB0:
    	.cfi_startproc
    	pushl	%ebp
    	.cfi_def_cfa_offset 8
    	.cfi_offset 5, -8
    	movl	%esp, %ebp
    	.cfi_def_cfa_register 5
    	movl	8(%ebp), %eax
    	addl	$4, %eax
    	popl	%ebp
    	.cfi_restore 5
    	.cfi_def_cfa 4, 4
    	ret
    	.cfi_endproc
    .LFE0:
    	.size	g, .-g
    	.globl	f
    	.type	f, @function
    f:
    .LFB1:
    	.cfi_startproc
    	pushl	%ebp
    	.cfi_def_cfa_offset 8
    	.cfi_offset 5, -8
    	movl	%esp, %ebp
    	.cfi_def_cfa_register 5
    	subl	$4, %esp
    	movl	8(%ebp), %eax
    	movl	%eax, (%esp)
    	call	g
    	leave
    	.cfi_restore 5
    	.cfi_def_cfa 4, 4
    	ret
    	.cfi_endproc
    .LFE1:
    	.size	f, .-f
    	.globl	main
    	.type	main, @function
    main:
    .LFB2:
    	.cfi_startproc
    	pushl	%ebp
    	.cfi_def_cfa_offset 8
    	.cfi_offset 5, -8
    	movl	%esp, %ebp
    	.cfi_def_cfa_register 5
    	subl	$4, %esp
    	movl	$6, (%esp)
    	call	f
    	addl	$2, %eax
    	leave
    	.cfi_restore 5
    	.cfi_def_cfa 4, 4
    	ret
    	.cfi_endproc
    .LFE2:
    	.size	main, .-main
    	.ident	"GCC: (Ubuntu 4.8.2-19ubuntu1) 4.8.2"
    	.section	.note.GNU-stack,"",@progbits
    
    

    代码高亮语言对应的关键字
    语言名 关键字
    C++ cpp
    C# cs
    CSS css
    Java java
    JavaScript javascript
    JSON json
    Markdown markdown
    Python python
    SQL sql
    XML xml
    x86汇编 x86asm

    寄存器
    通用寄存器:

    AX:累加器 BX:基地址寄存器 CX:计数寄存器 DX:数据寄存器 BP:堆栈基址针 SI、DI:变址寄存器
    SP:堆栈顶指针

    段寄存器:

    CS:代码段寄存器,指向包含程序指令的段。 SS:栈段寄存器,指向包含当前程序栈的段。 DS:数据段寄存器,指向包含静态数据或者全局数据段。
    ES:附加寄存器,指向附加数据段

    寻址方式

    movl %eax,%edx edx=eax 寄存器寻址
    movl $0x123,%edx edx=0x123 立即寻址
    movl $0x123,%edx edx=*(int32_t)0x123 直接寻址
    movl (%ebx),%edx edx=(int32_t)ebx间接寻址
    movl 4(%ebx),%edx edx=(int32_t)(ebx+4) 变址寻址

  • 相关阅读:
    word设置的密码忘了怎么办?
    Navicat Report Viewer 设置 HTTP 的方法
    如何处理Navicat Report Viewer 报表
    excel密码忘记了怎么办
    Beyond Compare文本比较搜索功能详解
    Popular Cows POJ
    Problem B. Harvest of Apples HDU
    网络流模型整理
    The Shortest Statement CodeForces
    Vasya and Multisets CodeForces
  • 原文地址:https://www.cnblogs.com/banpingcu/p/11564790.html
Copyright © 2011-2022 走看看