vs2022 x64 C/C++和汇编混编(案例代码)

目录
  • vs2022环境x64 C/C++和汇编混编
    • 1、新建空的win32项目,新建main.cpp,示例代码如下
    • 2、新建asm64.asm汇编源文件,示例代码如下
    • 3、编译器配置,选择x64,debug或者release都可以,
    • 4、直接生成即可

vs2022环境x64 C/C++和汇编混编

vs64位程序不支持__asm内嵌汇编,需要单独编写汇编源文件

示例如下

1、新建空的win32项目,新建main.cpp,示例代码如下

#include <Windows.h>

extern "C" void  __stdcall asm_func(const char* lpText);

extern "C" UINT GetMsgBoxType()
{
	return MB_YESNOCANCEL;
}

int main()
{
	asm_func("Hello world!");
	return 0;
}

2、新建asm64.asm汇编源文件,示例代码如下

.data

	msgCaption  db 'Message box text',0

.code
align 16

extern GetMsgBoxType : proc
extern MessageBoxA : proc
extern __imp_MessageBoxA : qword

asm_func proc
	; RCX = address for the string for the message box
	sub		rsp, 28h		; shadow stack only [n]8 size

	lea		rdx, [msgCaption]
	mov		r8, rcx

	call	GetMsgBoxType
	mov		r9, rax
	xor     rcx, rcx

	;call	[__imp_MessageBoxA]
	call MessageBoxA

	add		rsp, 28h		; restoring shadow stack
	ret
asm_func endp

end

3、编译器配置,选择x64,debug或者release都可以,

3.1 右键项目 --> 生成依赖项 --> 生成自定义 --> 勾选masm

3.2 右键汇编源文件 --> 属性 --> 常规 --> 项类型 --> Microsoft Macro Assembier

4、直接生成即可

到此这篇关于vs2022 x64 C/C++和汇编混编的文章就介绍到这了,更多相关vs2022 x64 汇编内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • VS2022实现VC++打包生成安装文件图文详细历程

    目录 首先:打开你的项目文件: 其次:添加新建项目: 第三:点击新建项目 第四:点击下一步 第五:创建程序的快捷方式: 第六: 创建“开始菜单条目”: 第七:生成打包安装程序: 第八:安装程序: 后记: 前言: VC++写好的项目程序,无论你的程序是控制台程序,对话框程序,还是文档程序,最终都是要给客户使用的,要让你的程序在其他电脑平台上使用,必须对项目程序进行打包发布,生成安装程序. 如何生成安装程序: 首先:打开你的项目文件: 打开你想要发布的项目文件,这一步很重要. 其次:添加新建项目:

  • 使用VS2022开发在线远程编译部署的C++程序(图文详解)

    一.先来一点C++的资源分享,意思一下. 1.c++类库源码以及其他有关资源.站点是英文的,英文不好的话可以谷歌浏览器在线翻译.http://www.cplusplus.com/ 2.C++参考手册.页面有点复古,不过有中文版本的.https://zh.cppreference.com/w/cpp 3.GUNC++库,你懂的.https://gcc.gnu.org/onlinedocs/libstdc++/index.html 4.一群大佬分享的一些中文开源资源.https://github.c

  • 2022最新使用VSCode编译运行C++的过程及会遇到的两个问题

    目录 第一步,下载和配置mingw64,即C/C++编译器GCC的Windows版本 第二步,下载和安装VSCode 第三步,编译运行C++代码 会遇到的问题 1.#include报错,找不到头文件. 2.“g++ : 无法将“g++”项识别为 cmdlet.函数.脚本文件或可运行程序的名称.” 第一步,下载和配置mingw64,即C/C++编译器GCC的Windows版本 1.官网下载:MinGW-w64 - for 32 and 64 bit Windows - Browse Files a

  • 关于VS2022不能使用<bits/stdc++.h>的解决方案(万能头文件)

    •<bits/stdc++.h>介绍 #include<bits/stdc++.h>包含了目前 C++ 所包含的所有头文件,又称万能头文件,简直是开挂一般的存在. 你编程所需要的头文件基本上都囊括在了该万能头文件中,试想一下,将若干行头文件: #include<iostream> #include<cstdio> #include<string> #include<map> #include<vector> ......

  • vs2022 x64 C/C++和汇编混编(案例代码)

    目录 vs2022环境x64 C/C++和汇编混编 1.新建空的win32项目,新建main.cpp,示例代码如下 2.新建asm64.asm汇编源文件,示例代码如下 3.编译器配置,选择x64,debug或者release都可以, 4.直接生成即可 vs2022环境x64 C/C++和汇编混编 vs64位程序不支持__asm内嵌汇编,需要单独编写汇编源文件 示例如下 1.新建空的win32项目,新建main.cpp,示例代码如下 #include <Windows.h> extern &qu

  • Swift和Objective-C 混编注意事项

    Swift和Objective-C 混编注意事项整理: 前言 Swift已推出数年,与Objective-C相比Swift的语言机制及使用简易程度上更接地气,大大降低了iOS入门门槛.当然这对新入行的童鞋没来讲,的确算是福音,但对于整个iOS编程从业者来讲,真真是,曾几何时"高大上",转瞬之间"矮矬穷".再加上培训班横行,批量批发之下,iOS再也看不到当年的辉煌.iOS10推出后,紧跟着Xcode8也推送了更新,细心者会发现,Xcode8下iOS版本最低适配已变为i

  • 浅谈python和C语言混编的几种方式(推荐)

    Python这些年风头一直很盛,占据了很多领域的位置,Web.大数据.人工智能.运维均有它的身影,甚至图形界面做的也很顺,乃至full-stack这个词语刚出来的时候,似乎就是为了描述它. Python虽有GIL的问题导致多线程无法充分利用多核,但后来的multiprocess可以从多进程的角度来利用多核,甚至affinity可以绑定具体的CPU核,这个问题也算得到解决.虽基本为全栈语言,但有的时候为了效率,可能还是会去考虑和C语言混编.混编是计算机里一个不可回避的话题,涉及的东西很多,技术.架

  • C#正则检测字符串是否字母数字混编的方法

    本文实例讲述了C#正则检测字符串是否字母数字混编的方法.分享给大家供大家参考.具体如下: using System.Text; using System.Text.RegularExpressions; public static class StringExtensions { public static bool IsAlphanumeric(this string source) { Regex pattern = new Regex("[^0-9a-zA-Z]"); retur

  • python与C、C++混编的四种方式(小结)

    混编的含义有两种, 一种是在python里面写C 一种是C里面写python 本文主要是进行简化,方便使用. ##################################################################################################### 第一种.Python调用C动态链接库(利用ctypes) pycall.c /***gcc -o libpycall.so -shared -fPIC pycall.c*/ #inclu

  • 解决Keras TensorFlow 混编中 trainable=False设置无效问题

    这是最近碰到一个问题,先描述下问题: 首先我有一个训练好的模型(例如vgg16),我要对这个模型进行一些改变,例如添加一层全连接层,用于种种原因,我只能用TensorFlow来进行模型优化,tf的优化器,默认情况下对所有tf.trainable_variables()进行权值更新,问题就出在这,明明将vgg16的模型设置为trainable=False,但是tf的优化器仍然对vgg16做权值更新 以上就是问题描述,经过谷歌百度等等,终于找到了解决办法,下面我们一点一点的来复原整个问题. trai

  • Flutter iOS开发OC混编Swift动态库和静态库问题填坑

    目录 引言 OC接入Swift 插件 静态库和 Framework 区别 新的问题: non-modular heade 不能在Framework Module中使用非Modular 的 Header 引言 Flutter 在 iOS 上的编译问题相信大家多多少少遇到过,不知道大家在搜索这方便的问题时,得到的答案是不是让你 clean 或者 install 多几次,很多时候就算解决完问题,也是处于薛定谔的状态,所以本篇也简单记录下 Flutter 开发中,OC 混编 Swift 遭遇动态库和静态

  • vbs与bat混编修改虚拟盘符的卷标

    我想改变我用subst创建的虚拟盘符的卷标 已知下面的命令无法改变由subst创建的盘符 @echo off subst X: c:\personalfiles wmic logicaldisk where "deviceid='X:'" set volumename="Development" pause 但是可以用这个vbs脚本来改变 Set oShell = WScript.CreateObject("Shell.Application")

  • bat、vbs、js 原生混编(一个bat可以执行vbs,js代码)

    发现 mshta 会把 file:// 协议指向的文件当作 html 来解析(注:IUnknown 与 happyxxdhaha 提醒此处必需使用绝对路径,否则不会执行),心里顿时有一万只草泥马奔过,原来如此简单的答案就在身边,却错过了四年 基本框架: 复制代码 代码如下: <!-- : bathome @echo off echo I'm Batch! mshta "file://%~f0" pause&exit 使用注释标签囊括批处理部分,条件是批处理部分不能出现注释

  • IntelliJ IDEA 2017.1.4 x64配置步骤(介绍)

    只是为了研究下idea这款编译器怎么使用.开门见山,说下如何配置这款编译器,不配置也能用,但是强迫症表示不服.下面直入正题: 下载与安装就不说了,除了更改安装目录外,没啥注意的地方,建议下载idea去官网下载,这里的"官网"不是下载站哦. 安装完毕后,通过桌面上的快捷方式定位到文件位置,用editplus打开该目录下的idea.properties文件,注意下图中的红框部分,默认是C盘,这里改为了D盘相关目录下,可以自行定义,其实最简单方案是到C盘用户文件夹下找到.IntelliJId

随机推荐