首页 > 编程语言 > 详细

C语言内自定义汇编函数&调用约定

时间:2021-09-06 06:15:59      阅读:16      评论:0      收藏:0      [点我收藏+]

探究如何在C语言里直接自写汇编函数

裸函数

裸函数与普通函数的区别

普通函数在经过编译器编译时,编译器自动生成保护现场,恢复现场等反汇编代码

当我们想要自己实现函数内部的汇编代码时,就可以告诉汇编器不需要去生成额外的汇编代码,这就是裸函数的目的

裸函数声明

就是在函数前加一个__declspec(naked)前缀,就OK了

include "xxx" | include

是一种规范而已,前者包含用户自定义,后者包含标准库文件

#include "stdafx.h"

void __declspec (naked) function(){
        __asm{
                ret
        }
}
int main(int argc, char* argv[])
{
        function();
        return 0;
}

普通函数再经汇编后

技术分享图片

裸函数

技术分享图片

调用协定

技术分享图片

函数调用结束后手动恢复堆栈
技术分享图片

函数返回前,会自动恢复堆栈

技术分享图片

C语言内自定义汇编函数&调用约定

原文:https://www.cnblogs.com/Aurora-M/p/15228898.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!