nasm 彙編 與c 語言互相呼叫
阿新 • • 發佈:2018-12-09
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