linux下64位汇编的系统调用(5)
2015-04-12 10:33
267 查看
看到这里大家都基本知道了如何进行linux下的汇编系统调用;不过有些童鞋可能会问:那些C库中函数里为我们解决的额外汇编代码你是怎么知道的?
好吧,我承认:我是通过逆向知道的,这貌似有点犯规的嫌疑…
比如举个例子,那上一篇里的mmap C库函数来说,首先写一个C代码:
前面介绍过几个linux下的集成调试环境,这里我们还是用codelite而不用codeblocks,原因很简单,后者需要C库函数的源代码才能在调试中查看C库中汇编指令,而我们一般没法找到这些源代码。
不过codeblocks里面可以设置汇编的语法,比如可以设置为intel类型:
而codelite貌似没找到设置的地方,只有用大脑在at&t和intel之间转换鸟。
好吧,我承认:我是通过逆向知道的,这貌似有点犯规的嫌疑…
比如举个例子,那上一篇里的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库中汇编指令,而我们一般没法找到这些源代码。
不过codeblocks里面可以设置汇编的语法,比如可以设置为intel类型:
而codelite貌似没找到设置的地方,只有用大脑在at&t和intel之间转换鸟。
相关文章推荐
- linux下64位汇编的系统调用(3)
- linux下64位汇编的系统调用(1)
- 64位汇编之linux系统调用
- linux下64位汇编的系统调用(3)
- linux下64位汇编的系统调用(3)
- linux下64位汇编的系统调用(4)
- linux下64位汇编的系统调用(5)
- linux下64位汇编的系统调用(4)
- linux下64位汇编的系统调用(4)
- linux下64位汇编的系统调用(1)
- linux下64位汇编的系统调用(2)
- linux系统调用64位汇编与32位汇编不同及兼容
- linux下64位汇编的系统调用(2)
- linux下64位汇编的系统调用(1)
- linux下64位汇编的系统调用(2)
- linux下64位汇编的系统调用(5)
- Linux 汇编程序 系统调用 [李园7舍_404]
- 汇编语言调用Linux系统调用read和write
- Linux 系统调用的实现及其汇编代码的嵌入到C中
- Linux下汇编程序及系统调用的深入分析