clion 使用gas汇编,nasm汇编

本文介绍了使用Nasm汇编语言编写示例代码,以及如何在C++项目中集成gas汇编,并提到作者尝试在不喜欢的VSCode中对汇编文件进行调试,尽管这不是其首选IDEclion的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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和操作习惯所以研究了一下这个,虽然没有什么意义

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值