博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
97函数调用的约定
阅读量:5947 次
发布时间:2019-06-19

本文共 553 字,大约阅读时间需要 1 分钟。

复制文件  fopen

重命名
删除文件
remove   删除文件

 

#include<stdio.h>

#include<stdlib.h>
void main(){
remove("1.txt");
system("pause");
}

 

rename  重命名

 

#include<stdio.h>

#include<stdlib.h>
void main(){
rename("1.txt","2.txt");
system("pause");
}

 


我们刚开始学习C语言的时候,通过给大家反汇编.

我们知道参数可以通过寄存器传递,也可以通过栈,还可以混合使用.

 调用约定  压栈顺序  平衡堆栈
 __cdecl  右->左  调用者清理栈  外平栈
 __stdcall  右->左  自身清理栈     内平栈
 __fastcall  ECX/EDX传送前两个,剩下的右到左  自身清理栈     内平栈

返回值都是EAX
调用约定,是给编译器看的,通过编译器生成的汇编代码是什么样子的.
1.怎么样传递参数.
2.怎么样平衡堆栈.
上面几种只是常见的,如果我们经常写完代码,反汇编看的话,有时候会发现调用约定不是以上的任何一种.

转载于:https://www.cnblogs.com/xiaodaxiaonao/p/9142305.html

你可能感兴趣的文章
获取当前时间 YYYY-MM-DD
查看>>
从分布式一致性到共识机制(二)Raft算法
查看>>
大话设计模式:原型模式
查看>>
利用jenkins+saltstack+sh部署项目到多台服务器
查看>>
Android项目实战(十二):解决OOM的一种偷懒又有效的办法
查看>>
五大理由分析Springboot 2.0为什么选择HikariCP
查看>>
最佳实战Docker持续集成图文详解
查看>>
Linux下批量ping某个网段ip的脚本
查看>>
Grid++Report报表工具C/S实战篇(五)
查看>>
js scrollIntoViewIfNeeded
查看>>
提高MSSQL数据库性能(1)对比count(*) 和 替代count(*)
查看>>
jenkins插件安装失败更改插件源
查看>>
手把手教你搭建一个基于Java的分布式爬虫系统
查看>>
基于SpringMVC+Spring+MyBatis实现秒杀系统【概况】
查看>>
BZOJ1432: [ZJOI2009]Function(找规律)
查看>>
C++源码里没有./configure文件的问题
查看>>
[E2E] Visual Differing Tests with Puppeteer and PixelMatch
查看>>
springboot中@EnableAsync与@Async注解使用
查看>>
Nginx配置ssl证书
查看>>
为什么你SQL Server的数据库文件的Date modified没有变化呢?
查看>>