吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 901|回复: 7
收起左侧

[讨论] 64位编译如何声明裸函数?

[复制链接]
董督秀 发表于 2024-6-4 21:31
    VS2019在默认编译器下,32位编译可以通过(naked)关键字声明裸函数;但在64位编译,则提示未定义naked标识或者禁止使用此扩展。我知道换编译器可以解决,但是如果非要使用默认的编译器实现声明64位裸函数,应该如何做?

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

头像被屏蔽
捷豹网络丶贱仔 发表于 2024-6-4 22:59
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽
捷豹网络丶贱仔 发表于 2024-6-4 23:00
头像被屏蔽
捷豹网络丶贱仔 发表于 2024-6-4 23:17
 楼主| 董督秀 发表于 2024-6-4 23:32
捷豹网络丶贱仔 发表于 2024-6-4 23:17
1.首先,创建一个汇编文件(例如 naked_function.asm),并在其中编写你的裸函数:
[mw_shl_code=cpp,tr ...

64位用这个方法有局限性,只能写裸汇编;在32位的naked声明之后,不仅能写裸汇编,还能参杂API或者其他函数/方法调用。我的需求是,在不换编译器的情况下,实现64位naked声明。
爱飞的猫 发表于 2024-6-5 06:49
MSVC 编译到 x64 目标时不可以。

官方文档:

Note that the naked attribute is only valid on x86 and ARM, and is not available on x64.
https://learn.microsoft.com/en-us/cpp/cpp/naked-cpp?view=msvc-170
 楼主| 董督秀 发表于 2024-6-5 10:27
爱飞的猫 发表于 2024-6-5 06:49
MSVC 编译到 x64 目标时不可以。

官方文档:

如果不换msvc编译器,能自己实现一个64位编译的naked声明吗?

点评

c/cpp 语言层应该不行。 单独的汇编文件可以。 msvc 也可以用 clang 编译器,这个可以内连汇编,但是语法不太一样。  详情 回复 发表于 2024-6-5 18:03
爱飞的猫 发表于 2024-6-5 18:03
董督秀 发表于 2024-6-5 10:27
如果不换msvc编译器,能自己实现一个64位编译的naked声明吗?

c/cpp 语言层应该不行。

单独的汇编文件可以。

msvc 也可以用 clang 编译器,这个可以内连汇编,但是语法不太一样。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-15 05:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表