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和操作习惯所以研究了一下这个,虽然没有什么意义
本文介绍了使用Nasm汇编语言编写示例代码,以及如何在C++项目中集成gas汇编,并提到作者尝试在不喜欢的VSCode中对汇编文件进行调试,尽管这不是其首选IDEclion的优势。
924

被折叠的 条评论
为什么被折叠?



