求帮忙:VS中使用x64汇编问题 求推荐教程
1在cpp文件里 咋使用 asm汇编文件里的【变量】
2在asm汇编文件里 咋使用 cpp文件里的【变量 】
3在asm汇编文件里 咋调用 cpp文件里的【函数】
4在cpp文件里 咋调用 asm汇编文件里的【函数】
求帮忙:VS中使用x64汇编问题 求推荐教程
1在cpp文件里 咋使用 asm汇编文件里的【变量】
2在asm汇编文件里 咋使用 cpp文件里的【变量 】
3在asm汇编文件里 咋调用 cpp文件里的【函数】
4在cpp文件里 咋调用 asm汇编文件里的【函数】
参考GPT和自己的思路:
在asm汇编文件:
GLOBAL myVariable ; 声明变量
SECTION .data
myVariable dd 10 ; 定义变量并赋初值10
在cpp文件:
extern int myVariable; // 声明变量
myFunction() {
int result = myVariable + 2; // 使用变量
}
在cpp文件中:
int myVariable = 20; //定义变量并赋值为20
在asm汇编文件中:
EXTERN myVariable ; 声明变量
SECTION .text
myFunction:
mov eax, [myVariable] ; 使用变量
...
在cpp文件中:
void myFunction() {
// 函数实现
}
在asm汇编文件中:
EXTERN myFunction ; 声明函数
SECTION .text
main:
call myFunction ; 调用函数
...
在asm汇编文件中:
global myFunction ; 定义全局标识符
SECTION .text
myFunction:
...
在cpp文件中:
extern "C" void myFunction(); // 声明全局标识符
int main() {
myFunction(); // 调用函数
...
}
需要注意的是,由于汇编代码一般都是基于c调用约定的,在cpp中使用asm时,需要注意将extern声明的函数加上"C"修饰符,避免函数名被Mangling导致无法在asm中找到对应函数。