nasm汇编
main.c
#include <stdio.h>
//extern int add(int a, int b);
extern int sub(int a, int b);
int main() {
printf("Hello, World!\n");
// add(33, 33);
sub(111,222);
return 0;
}
example.asm
section .text
global sub
sub:
mov eax,333
mov ebx,3433
add eax,ebx
ret
CmakeLists.txt
cmake_minimum_required(VERSION 3.15)
project(cx C)
enable_language(ASM_NASM)
#enable_language(ASM-ATT)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0")
set(CMAKE_ASM_NASM_FLAGS "${CMAKE_ASM_NASM_FLAGS} -f elf64")
add_executable(cx main.c example.asm)
#add_executable(cx main.c gas.s example.asm)
gas汇编
#include <stdio.h>
extern int add(int a, int b);
int main() {
printf("Hello, World!\n");
add(33, 33);
return 0;
}
gas.s
.data
msg:
.ascii "Hello, world!\n"
len = . - msg
.text
.global add
add:
movl $len,%edx
movl $msg,%ecx
movl $1,%ebx
movl $4,%eax
int $0x80
movl $0,%ebx
movl $1,%eax
int $0x80
CmakeLists.txt
cmake_minimum_required(VERSION 3.15)
project(cx C)
enable_language(ASM-ATT)
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -O0")
add_executable(cx main.c gas.s )
不能直接在汇编文件里面打断点 毕竟这个不是clion的强项 vscode可以
因为喜欢clion的ui和操作习惯所以研究了一下这个,虽然没有什么意义