当前位置: 技术问答>linux和unix
linux源代码中的汇编怎么看
来源: 互联网 发布时间:2015-03-28
本文导语: linux下有不少源代码是使用汇编写的,怎么能看懂呢?什么地方有相关的资料呢?如果是x86平台,看相关的指令集有用吗? 比如,下面是系统调用转换为int 0x80中断的宏中间的部分汇编代码: __asm__volatile("int $0x80" ...
linux下有不少源代码是使用汇编写的,怎么能看懂呢?什么地方有相关的资料呢?如果是x86平台,看相关的指令集有用吗?
比如,下面是系统调用转换为int 0x80中断的宏中间的部分汇编代码:
__asm__volatile("int $0x80"
:"=a"(__res)
:""(__NR_#_#name),"b"((long)(arg1)),"c"((long)(arg2)),
:"d"((long)(arg3)),"S"((long)(arg4)),"D"((long)(arg5)));
第一次看到这些汇编,高手们你们的第一反应是哪儿去查找相关的资料来理解代码的含义?
比如,下面是系统调用转换为int 0x80中断的宏中间的部分汇编代码:
__asm__volatile("int $0x80"
:"=a"(__res)
:""(__NR_#_#name),"b"((long)(arg1)),"c"((long)(arg2)),
:"d"((long)(arg3)),"S"((long)(arg4)),"D"((long)(arg5)));
第一次看到这些汇编,高手们你们的第一反应是哪儿去查找相关的资料来理解代码的含义?
|
语法是AT&T汇编语言,
采用的嵌入方式是gcc独有的,到www.gnu.org中查gcc的手册。
采用的嵌入方式是gcc独有的,到www.gnu.org中查gcc的手册。
|
info as
|
相当于mov eax,系统服务号
mov ebx,arg1
mov ecx,arg2
mov edx,arg3
mov esi,arg4
mov edi,arg5
int 0x80
mov eax,结果
ret
mov ebx,arg1
mov ecx,arg2
mov edx,arg3
mov esi,arg4
mov edi,arg5
int 0x80
mov eax,结果
ret