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) 变址寻址

  • 相关阅读:
    后端程序员必备的 Linux 基础知识+常见命令(近万字总结)
    信息收集流程
    在不影响程序使用的情况下添加shellcode
    使用Zolom内存解析运行python脚本(不落地)
    要点3:输入函数对比与自定义输入方式
    要点2:循环、条件控制
    对等连接和云联网
    上传自定义镜像到腾讯云
    Windows 激活
    MySQL错误(报错)一览表(对照表)
  • 原文地址:https://www.cnblogs.com/banpingcu/p/11564790.html
Copyright © 2011-2022 走看看