linux0.12-3-4

news/2025/2/11 13:38:39/

71–3.4-C与汇编程序的相互调用
71–3.4.1-C函数调用机制
76–3.4.2-在汇编程序中调用C函数
78–3.4.3-在C程序中调用汇编函数

3-4 C语言和汇编相互调用的
原因:为了效率,C语言和汇编之间会相互调用。

3-4-1 C函数调用
head.s如何跳转到main.c?
我们先讨论C函数的调用机制、控制权传递方式;
①数据的传递和局部变量存储空间的分配与回收通过栈操作来实现;
解释:栈被用来传递函数参数、存储返回信息、临时保存寄存器原有值
单个函数调用操作所使用的栈部分被称为栈帧;
②8086CPU为控制传递提供了简单的指令;

CALL和RET

主要理解 ebp esp

3-4-2 在汇编程序中调用C函数
将参数压如栈中;(最右边的先压入);
调用CALL指令去执行被调用的函数(将调用者下一条指令执行地址压入栈 EIP);
_system_call
->sys_call_table
{
sys_fork
{
_find_empty_process
_copy_process
}
}

3-4-3 在C程序中调用汇编函数
Linux内核很少用到;
可以尝试实验代码;


http://www.ppmy.cn/news/40552.html

相关文章

RMAN-06023: no backup or copy of datafile 1 found to restore

参考文档: RMAN-06026 RMAN-20003 - During Restore From A Disk Backup to an Identically Cloned Host (Doc ID 763703.1) RMAN RESTORE FAILS WITH RMAN-06023 ALTHOUGH BACKUPS ARE AVAILABLE (Doc ID 965122.1) RDBMS 11.2.0.4 问题: 在异机还原数…

ansible自动运维——明白ansible的资产清单inventory

大家好,这里是天亮之前ict,本人网络工程大三在读小学生,拥有锐捷的ie和红帽的ce认证,这里我会定期跟新自动话运维的博客,希望能提高自己的技术的同时,也可以帮助到大家,另外大家可以关注我的其它…

文献管理软件Endnote、Mendeley、Zotero比较及选择,Zotero基础使用技巧

引言 大家好,我是比特桃。日常开发的项目分为两种,一种是成熟化的工程项目,只需要与具体的业务紧密结合及应用,难点也比较偏向于软件工程或者互联网高并发的方向。这种项目我们通常不会选择去查文献去寻找问题的解决办法&#xf…

前端实用js dom合集

1. 整个网页变为灰色主题,最外层加css样式:filter:grayscale(1) 黑色主题:filter:invert(1) 2.js剪辑视频片段制作gif动图: 效果:点击开始就开始录制,点击结束右边显示生成的gif动图 生成g…

尚硅谷大数据技术Hadoop教程-笔记06【Hadoop-生产调优手册】

视频地址:尚硅谷大数据Hadoop教程(Hadoop 3.x安装搭建到集群调优) 尚硅谷大数据技术Hadoop教程-笔记01【大数据概论】尚硅谷大数据技术Hadoop教程-笔记02【Hadoop-入门】尚硅谷大数据技术Hadoop教程-笔记03【Hadoop-HDFS】尚硅谷大数据技术Ha…

LOTO示波器电源环路增益分析客户实测

我们在之前有文章介绍过LOTO示波器信号源扫频测电源环路增益稳定性的方法和过程,可以参考演示视频如下: https://www.ixigua.com/7135738415382790663?logTaga843d537a27090d5117b 或者阅读对应的文章:《LOTO示波器 实测 开环增益频响曲线/电…

Pytorch构建ResNet-50V2

🍨 本文为🔗365天深度学习训练营 中的学习记录博客 🍦 参考文章地址: 365天深度学习训练营-第J2周:ResNet-50V2算法实战与解析 🍖 作者:K同学啊 一、ResNetV2与ResNet结构对比 改进点 (a)origi…

Leetcode.1631 最小体力消耗路径

题目链接 Leetcode.1631 最小体力消耗路径 Rating : 1948 题目描述 你准备参加一场远足活动。给你一个二维 rows x columns的地图 heights,其中 heights[row][col]表示格子 (row,col)(row, col)(row,col) 的高度。一开始你在最左上角的格子 (0,0)(0, 0)…