再谈《Visual Studio中编写x64汇编的具体方法》

news/2024/11/14 12:39:11/文章来源:https://www.cnblogs.com/achillis/p/18373617

很久以前,写了一篇 《VS2010中编写x64汇编的具体方法

当时也没有太深入研究,只是粗粗的实现了功能而已。
后来看了微软官方文档,才发现有更简单更合理的设置方法。

微软原文如下: MASM for x64 (ml64.exe) | Microsoft Learn

将汇编程序语言文件添加到 Visual Studio C++ 项目

Visual Studio 项目系统支持在 C++ 项目中使用 MASM 生成的汇编程序语言文件。 MASM 完全支持 x64 汇编程序语言源文件,并将其生成到对象文件中。 然后,你可以将这些对象文件链接到为 x64 目标生成的 C++ 代码。 这是克服缺少 x64 内联汇编程序的一种方法。

将汇编程序语言文件添加到现有 Visual Studio C++ 项目的步骤

  1. 在解决方案资源管理器中,选择项目。 在菜单栏上选择“项目”、“生成自定义”。

  2. 在“Visual C++ 生成自定义文件”对话框中,选中 masm(.targets,.props) 旁边的复选框。 选择“确定”以保存你的选择并关闭对话框。

  3. 在菜单栏上,依次选择“项目”、“添加新项”。

  4. 在“添加新项”对话框的中心窗格中,选择“C++ 文件(.cpp)”。 在“名称”编辑控件中,输入扩展名为 .asm 而非 .cpp 的新文件名。 选择“添加”以将文件添加到项目并关闭对话框。

在添加的 .asm 文件中创建汇编程序语言代码。 生成解决方案时,将调用 MASM 汇编程序以将 .asm 文件汇编成一个对象文件,然后将其链接到项目中。 若要简化符号访问,请在 C++ 源代码中将汇编程序函数声明为 extern "C",而不是在汇编程序语言源文件中使用 C++ 名称修饰约定。

========================================================================
看完之后,感觉还是微软官方文档说的明白,而且这样不需要单独针对每一个asm文件进行设置。
具体操作如下:

 然后在弹出的对话框里设置:

 然后确定就可以了。非常的方便!



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/785345.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux安装JDK两种方式详细教程(附图)

Linux安装JDK详细教程(图文教程)这里介绍两种方式:yum安装方式和手动安装1、yum安装1.1 查看JDK版本,找到你想要安装的JDK版本,这里以 JDK1.8 为例输入命令:yum -y list java*1.2 安装JDK1.8输入命令:yum install -y java-1.8.0-openjdk.x86_64出现Complete!安装完成。…

我的新项目又来咯!

这次的项目周期计划 1 个月左右,争取带大家快速搞定,能够作为秋招时简历上的亮眼项目~大家好,我是鱼皮,今天分享个我的新项目公开课预告~ 今晚(8 月 22 号)晚 20 点 ,我会继续在 B 站和抖音《程序员鱼皮》账号 直播新项目,依然是从 0 到 1 全程直播开发! 这次的项目周…

【日记】好想换电脑(634 字)

正文最近连着发了好多高温橙色预警,就算坐在行内都能感觉到明显的闷热。每次写日记想一想今天都做了些什么,总是觉得什么也没做。上班之后感觉生活十分枯燥。明明学生时代有那么多的事情可以写。昨天涩得太晚了,2 点钟才睡。今天有些睡眠不足。也因此中午睡了一个好觉。明明…

Java学习笔记2(数据库的三大范式)

什么是范式?范式是数据库设计时遵循的一种规范,不同的规范要求遵循不同的范式。 最常用的三大范式第一范式(1NF):属性不可分割,即每个属性都是不可分割的原子项。(实体的属性即表中的列) ps:举个例子,地址列山东省青岛市市北区,可以这样存储,但是实际上不满足第一范式,…

Unity跳过闪屏页

github上一段代码,跳过Unity Logo启动屏: github链接: https://github.com/psygames/UnitySkipSplash/blob/main/SkipSplash.cs Unity API文档,Unity暴露了SplashScreen.Stop() 停止启动屏的API只需要写个静态方法,使用[RuntimeInitializeOnLoadMethod(RuntimeInitializeL…

VulNyx - Responder

靶机ip 192.168.200.9 先nmap 扫描全端口这个22端口不知道有没有开 被过滤了 我们 收集一下靶机的ipv6地址 nmap用ipv6地址扫他的端口就能绕过 他的端口过滤 ping6 ff02::1 收集ipv6地址可以看到其实他的22端口就是开的访问80端口没啥东西dirsearch扫描一下 啥东西都没扫出来 …

为什么用Vite框架?来看它的核心组件案例详解

这些核心组件功能共同构成了 Vite 的强大能力,使它成为一个高效、灵活且易于使用的前端构建工具,如果你还没用上 Vite,那就抓紧搞起来吧。Vite 是一个前端构建工具,它以其快速的开发服务器和生产优化的打包器而闻名前端界,今天的内容,必须得唠唠 Vite 的关键能力,以下是…

抖音集团 FlinkSQL 性能优化探索及实践

在降本增效的大背景下,为满足业务对更高性能的需求,流式计算团队对 FlinkSQL 进行了深度优化。本文将聚焦这一实践,详解主要优化思路。本文作者:李精卫更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 背景 随着抖音集团内部对流式…

多线程和多线程同步

多线程和多线程同步多线程编程是现代软件开发中的一项关键技术,在多线程编程中,开发者可以将复杂的任务分解为多个独立的线程,使其并行执行,从而充分利用多核处理器的优势。然而,多线程编程也带来了挑战,例如线程同步、死锁和竞态条件等问题。本篇文章将深入探讨多线程编…

织梦dedeCMS怎么使用arclist标签调用自定义字段

{dede:arclist row=10 titlelen=24 orderby=pubdate idlist= col=2} [field:textlink/]([field:pubdate function=MyDate(m-d,@me)/])<br/> {/dede:arclist} row=‘10’ 返回文档列表总数typeid=‘’ 栏目ID,在列表模板和档案模板中一般不需要指定,在首页模板中允许用&q…

[NOI2017] 游戏

先来讲一下到底什么叫K-SAT 先来看看2-SAT的准确定义那么对于k-SAT,不是说每个集合就有\(k\)个元素了(每个集合仍然只有两个元素,因为布尔变量的取值只有\(0\)和\(1\)),而是说给出的限制条件涉及\(k\)个元素,比如3-SAT那么对于这道题目,如果不考虑\(\text{x}\)的话,就是…

【待做】【整理】【域渗透系列】跨森林:Extra SID攻击

本文选自《内网安全攻防:红队之路》 由于微软将森林信任设计为安全边界,在默认情况下,即使我们完全控制了当前森林,也可能无法入侵其他受信任的森林(trusted forest)。 下面介绍在非默认条件下(但也比较常见),如何入侵一个受信任的森林。 在《内网安全攻防:渗透测试实…