1. 程式人生 > >nasm 彙編 與c 語言互相呼叫

nasm 彙編 與c 語言互相呼叫

NASM 與c 互動 Window

nasm 彙編 與c 語言互相呼叫

nasm 在不同作業系統下,函式入口不一樣,需要注意。在win 入口函式是 _mian 而在 Linux 下是start

Windows

hello.asm

global  _main
extern  _myprintf
 
section .text
_main:
push    message
call    _myprintf
add     esp, 4
ret
message:
db      'Hello, WWrld', 10, 0

Linux

hello.asm

global  start
extern  _myprintf
 
section .text
start:
push    message
call    _myprintf
add     esp, 4
ret
message:
db      'Hello, WWrld', 10, 0

c函式,提供給彙編使用

hello2.c

#include<stdio.h>

void myprintf(char* msg)
{
	printf(msg);
}

編譯過程

需要安裝好 nasm 配置到環境變數中
需要使用vs2017 ,cl.exe link.exe 都是安裝了,用everything 搜尋配置
可以百度 cl.exe 的使用

nasm -fwin32 hello.asm
cl /c hello2.c
link hello.obj hello2.obj

環境配置

nasm 直接官網下 https://www.nasm.us/
cl link 的配置 https://www.cnblogs.com/LCCRNblog/p/4532643.html