| |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| -> 系统运维 -> 2021-2022-1 20212820《Linux内核原理与分析》第二周作业 -> 正文阅读 |
|
|
[系统运维]2021-2022-1 20212820《Linux内核原理与分析》第二周作业 |
|
本周我通过学习《Linux内核分析配套实验》课程的实验1,通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的。 步骤一在实验楼中,新建main.c,输入以下代码: ? 步骤二输入gcc -S -o main.s main.c -m32.将此程序反汇编成汇编程序. 其中:-S表示执行反汇编,-m32表示转换成32位汇编程序。 注意实验楼的实验环境是64位,所以这里要加-m32。 ? ?步骤三使用命令:gedit main.s 查看汇编程序。?? ?实验分析:我们会发现,简短的几句c语言,转换成汇编代码如此复杂,通过学习,我了解到汇编程序中只要是以“.”开头的语句,例如“.globl g”,都是用于链接辅助信息,实际并不会执行,所以在进行代码分析时可以直接忽略这些语句。简化后的代码如下所示:
我们会发现,此汇编程序和c语言程序一样,也分为三部分:f 函数 、g 函数、main主函数 首先执行的是main函数:
?
最后leave是撤销函数堆栈,ret相当于c语言中的return返回程序运行值。 总结????????通过本周对于计算机汇编的基础知识的学习,以及实验楼的实验一的完成,我对于计算机的基本原理存储程序有了更加深刻的认知,简短的几句c语言程序,转换成对应的汇编代码便复杂了很多,对于计算机而言,原始的数据需要通过输入设备输入到计算机的存储器中,然后通过指令,进行运算。在汇编程序中,便体现在通过指令,利用寄存器存储值,只要利用栈这一结构来实现了函数之间的调用、最后实现结果。 |
|
|
|
|
| 上一篇文章 下一篇文章 查看所有文章 |
|
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
| 360图书馆 购物 三丰科技 阅读网 日历 万年历 2026年2日历 | -2026/2/14 12:23:00- |
|
| 网站联系: qq:121756557 email:121756557@qq.com IT数码 |