linux下64位汇编的系统调用(5)

简介:

看到这里大家都基本知道了如何进行linux下的汇编系统调用;不过有些童鞋可能会问:那些C库中函数里为我们解决的额外汇编代码你是怎么知道的?
好吧,我承认:我是通过逆向知道的,这貌似有点犯规的嫌疑…
比如举个例子,那上一篇里的mmap C库函数来说,首先写一个C代码:

#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <fcntl.h>
#include <errno.h>
#include <string.h>
#include <math.h>
#include <unistd.h>

int main(void){
    int size = 4096;
    printf("anonymous is %08x\n",MAP_ANONYMOUS);
    printf("err test is %s\n",strerror(22));
    //in linux with -D_BSD_SOURCE
    char *buf = mmap(NULL,size,PROT_READ|PROT_WRITE,MAP_ANONYMOUS,-1,0);
    printf("buf is %p\n",buf);
    if(buf == MAP_FAILED){
    //if(buf < 0){
        printf("mmap failed(%s)\n",strerror(errno));
        return 1;
    }
    return 0;
}

前面介绍过几个linux下的集成调试环境,这里我们还是用codelite而不用codeblocks,原因很简单,后者需要C库函数的源代码才能在调试中查看C库中汇编指令,而我们一般没法找到这些源代码。
null

null

这里写图片描述

不过codeblocks里面可以设置汇编的语法,比如可以设置为intel类型:

null

而codelite貌似没找到设置的地方,只有用大脑在at&t和intel之间转换鸟。

相关文章
|
2月前
|
存储 Linux 程序员
Linux中的主要系统调用
【2月更文挑战第16天】
|
2月前
|
Linux
如何查看linux是32位还是64位
如何查看linux是32位还是64位
20 0
|
2月前
|
算法 Linux C++
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
51 0
|
2月前
|
Linux API 数据安全/隐私保护
Linux下的系统编程——系统调用(五)
Linux下的系统编程——系统调用(五)
48 0
Linux下的系统编程——系统调用(五)
|
2月前
|
运维 Linux 程序员
最全树莓派4B安装64位Linux(不用显示器键盘鼠标),Linux运维面试送分题
最全树莓派4B安装64位Linux(不用显示器键盘鼠标),Linux运维面试送分题
最全树莓派4B安装64位Linux(不用显示器键盘鼠标),Linux运维面试送分题
|
2月前
|
Linux 编译器 调度
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
本文介绍了如何将POSIX应用程序编译为在Xenomai实时内核上运行的程序。
81 1
xenomai内核解析--双核系统调用(二)--应用如何区分xenomai/linux系统调用或服务
|
20天前
|
Linux Shell
保姆级只需五步linux中安装aapt(64位)的方法
保姆级只需五步linux中安装aapt(64位)的方法
|
2月前
|
Linux Docker 容器
最全树莓派4B安装docker-compose(64位Linux)(1),2024年最新一文说清
最全树莓派4B安装docker-compose(64位Linux)(1),2024年最新一文说清
|
2月前
|
Linux 开发工具 C语言
【操作系统】实验四 增加Linux系统调用
【操作系统】实验四 增加Linux系统调用
80 1
|
1月前
|
人工智能 Linux Python
Alibaba Cloud Linux 3.2104 LTS 64位 怎么安装python3.10.12和pip3.10
Alibaba Cloud Linux 3.2104 LTS 64位 怎么安装python3.10.12和pip3.10
95 0