C++中调用汇编函数
# src/asm/asm_base.S
.text
.globl asm_add
.globl asm_sub
asm_add:
push %ebp
mov %esp,%ebp
mov 0x8(%ebp),%edx
mov 0xc(%ebp),%eax
add %edx,%eax
pop %ebp
ret
asm_sub:
push %ebp
mov %esp,%ebp
mov 0x8(%ebp),%eax
sub 0xc(%ebp),%eax
pop %ebp
ret
#ifndef __INC_ASM_H__
#define __INC_ASM_H__
#ifdef __cplusplus
extern "C" {
#endif
extern int asm_add(int a, int b);
extern int asm_sub(int a, int b);
#ifdef __cplusplus
}
#endif
#endif
#include "asm.h"
#include "main_cpp.h"
int main_cpp(void){
int a = 10;
int b = 20;
int c = asm_add(a, b);
int d = asm_sub(a, b);
return 0;
}
#ifndef __MAIN_CPP_H__
#define __MAIN_CPP_H__
#ifdef __cplusplus
extern "C" {
#endif
int main_cpp(void);
#ifdef __cplusplus
}
#endif
#endif