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

  • 相关阅读:
    poj 4005 Moles
    牛客 2C 圈圈
    牛客 2B 树 (组合计数)
    AC日记——校门外的树(增强版) 洛谷 P1276
    AC日记——寻找道路 洛谷 P2296
    AC日记——挤牛奶 洛谷 P1204
    AC日记——最大数 洛谷 P1198 [JSOI2008]
    AC日记——中位数 洛谷 P1168
    AC日记——校门外的树 洛谷 P1047
    AC日记——约瑟夫问题 codevs 1282
  • 原文地址:https://www.cnblogs.com/banpingcu/p/11564790.html
Copyright © 2011-2022 走看看