64位Linux汇编
来源:互联网 发布:数据结构英文版 c语言 编辑:程序博客网 时间:2024/05/16 00:30
操作系统都开始向64位过度了,但大部分教材教程书籍资料还停留在32位,绝大部分语言不用care这个问题,但汇编还是有较大变化的。
C语言代码:
int main(){ exit(2);}
32位汇编实现上述C语言代码相同功能:
.section .data.section .text.global _start_start: movl $1, %eax movl $2, %ebx int $0x8064位Linux系统汇编以上代码:
$ as -32 -o exit.o exit.s
链接:
$ ld -m elf_i386 -o exit exit.o
运行:
$ ./exit
查看运行结果:
$ echo $?
相同功能的64位版本:
.section .data.section .text.global _start_start: movq $60, %rax movq $2, %rdi syscall汇编:
$ as -o exit.o exit.s
链接:
$ ld -o exit exit.o
运行和查看运行结果同32位:
$ ./exit
$ echo $?
32位汇编和64位汇编区别:
- 寄存器名不同,分别是eax和rax
- 系统调用号不同,详见文件/usr/include/asm/unistd_32.h 和 unistd_64.h
- 系统调用参数所用寄存器不同,32位是ebx,ecx,edx而64位是rdi,rsi,rdx
- 系统调用触发指令不同,分别是int 80和syscall
0 0
- 64位linux 汇编
- 64位Linux汇编
- 64位Linux汇编
- Linux 下的64位汇编
- 64位汇编之linux系统调用
- linux-32位汇编
- Mac OS X下64位汇编与Linux下64位汇编的一些不同
- linux系统调用64位汇编与32位汇编不同及兼容
- 64位汇编
- 64位汇编器
- linux下64位汇编的系统调用(1)
- linux下64位汇编的系统调用(2)
- linux下64位汇编的系统调用(3)
- linux下64位汇编的系统调用(4)
- linux下64位汇编的系统调用(5)
- linux下32位汇编调用规则
- linux下32位汇编hello, world!
- 64位汇编移植小结
- Scala学习笔记
- 计算机视觉基础4——对极几何(Epipolar Geometry)
- Codeforces Round #362 (Div. 2) B 模拟
- 腾讯测试工程师:你以为会打LOL就能做测试了?
- 模板元编程-编译期间加密
- 64位Linux汇编
- express 4.x 打开网页时弹出登录对话框
- [转载] Git工作流指南
- 获取键盘高度
- 样式主题与自定义View
- iconv-lite
- socket编程
- redis 3.0集群安装与配置
- php5.4压缩包版(zip)安装教程