linux 80中断,在64位Linux上使用中断0x80
参见英文答案 >
What happens if you use the 32-bit int 0x80 Linux ABI in 64-bit code?1个
我有一个简单的64位汇编程序,用于打印’O’和’K’后跟换行符.
但是,’K’永远不会打印出来.程序的目标之一是将rax寄存器的低位中的值打印为ASCII字母.该程序专门用于64位Linux,用于教育目的,因此不需要使用C风格的系统调用.
我怀疑这个问题要么与移动QWORD [rsp],rax或mov rcx,rsp有关.
目前,该程序仅输出“O”后跟换行符.
如何更改程序以使其使用rax中的值然后打印“K”以使完整输出为“OK”,然后换行?
bits 64
section .data
o: db "O" ; 'O'
nl: dq 10 ; newline
section .text
;--- function main ---
global main ; make label available to the linker
global _start ; make label available to the linker
_start: ; starting point of the program
main: ; name of the function
;--- call interrupt 0x80 ---
mov rax,4 ; function call: 4
mov rbx,1 ; parameter #1 is 1
mov rcx,o ; parameter #2 is &o
mov rdx,1 ; parameter #3 is length of string
int 0x80 ; perform the call
;--- rax = 'K' ---
mov rax,75 ; rax = 75
;--- call interrupt 0x80 ---
sub rsp,8 ; make some space for storing rax on the stack
mov QWORD [rsp],rax ; move rax to a memory location on the stack
mov rax,rsp ; parameter #2 is rsp
mov rdx,1 ; parameter #3 is length of string
int 0x80 ; perform the call
add rsp,8 ; move the stack pointer back
;--- call interrupt 0x80 ---
mov rax,nl ; parameter #2 is nl
mov rdx,1 ; parameter #3 is length of string
int 0x80 ; perform the call
;--- exit program ---
mov rax,1 ; function call: 1
xor rbx,rbx ; return code 0
int 0x80 ; exit program
linux 80中断,在64位Linux上使用中断0x80相关推荐
- linux内核高分辨率定时器,64位Linux上的高分辨率定时器支持
我试图在2.6.39.1 64位Linux上启用高分辨率定时器支持.为此,我首先在.config中设置CONFIG_HIGH_RES_TIMERS=y.64位Linux上的高分辨率定时器支持 而且,g ...
- 【转】将 Linux 应用程序移植到 64 位系统上
原文网址:http://www.ibm.com/developerworks/cn/linux/l-port64.html 随着 64 位体系结构的普及,针对 64 位系统准备好您的 Linux® 软 ...
- linux 内存使用很大,在32位和64位Linux上,为什么同一进程的pmap的内存使用量会有很大差异?...
我正在设置一台新服务器(64位Debian),并试图使apache进程尽可能小,从而禁用了我不需要的任何模块.然后,我将pmap输出与32位Debian机器上的apache进行了比较,并打开了更多模块 ...
- linux上运行gfortran,linux – gfortran:在64位系统中编译32位可执行文件
我在AMD Athlon(tm)64 X2双核处理器5200×2上运行Ubuntu 12.10(64位), Linux内核3.5.0-51通用.我有GNU Fortran(Ubuntu / Linar ...
- matlab 64位 mex 32,C Mex文件在64位Linux上崩溃了matlab,但没有32位窗口崩溃,但程序在Matlab外运行正常...
警告我在问题中提供的代码可能会使matlab和您的机器崩溃! 我已经为C类编写了一个mex网关函数 . 如果我使用R2008a在32Bit windows上编译这个mex函数我没有问题 . 如果我在运 ...
- 解决内联汇编64位Linux系统调用提示Bad Address
在参考<Linux 下系统调用的三种方法>这篇文章的时候,前面的syscall()和chmod()两种方法完成系统调用chmod都可以正常执行. 但当我使用内联汇编时,程序执行提示errn ...
- 64位Linux下使用QQ
因为官方QQ for linux 版本只用32位,所以在64位系统上运行需要相应的库支持. Ubuntu 执行以下命令: sudo apt-get install ia32-libs ia32-lib ...
- linux是32还是64位,如何看linux是32位还是64位
查看linux是多少位的几位方法: 查看linux机器是32位还是64位的方法: 方法一: file /sbin/init 或者 file /bin/ls 结果如下: /sbin/init: ...
- java 位运算取8位_Java 9 AOT 试用:仅支持 64 位 Linux和java.base 模块编译
Java 9 引入了 aot 编译方式,能够将 class 文件直接编译成可执行二进制文件.目前 Java 9 的 early access 版本已经提供了编译工具,让我们来看看它的功能吧. 注意:按 ...
最新文章
- 数据结构32:树存储结构
- RHCE笔记1-安裝
- C++ 11 中的POD
- python英文高频句统计_使用Python 统计高频字数的方法
- c++读取txt文件中的数字_在Python中读取包中的数据文件的三种方式
- excel表格从某个标志计算机,让Excel也玩多标签 多个图表一个窗口 -电脑资料
- jQuery的实现原理
- CompressAI:InterDigital开源基于学习的图像视频压缩研究库
- 干货满满!全面详解如何用递归解题!
- 一起来看小米发布会!
- 线程--匿名内部类实现多线程的2种方式
- 3dsMax中Vray渲染器法线贴图用法
- 手机无线网络为啥无法连接服务器,手机wifi打不开及手机WiFi连接上但不能上网,怎么办?...
- 国内域名如何转入 GoDaddy,域名转入GoDaddy要注意?
- 8.9.2 疯狂填词
- 【JZOJ 省选模拟】6638.Seat
- 学校的友宝自动售货机出故障 不知什么系统呵
- 遗传算法最通俗的讲解案例
- curl打开网页403或者302的解决方法(详细总结)
- 卡方检验在关联分析中的应用
热门文章
- android 手机 跑分榜,安兔兔跑分最新排行图 2020年4月Android手机性能榜
- Python 绘制散点图
- pandas使用笔记(一)导入,查看,读取数据
- JAVA 测试日期的不同显示格式
- 例子---PHP实现网页计数器
- 6_less中的匹配模式
- ES6_proxy_note
- python的多线程应用前景_什么是线程(多线程),Python多线程的好处
- java 内部类 作用_java内部类的作用分析
- python123百钱买百鸡_day01笔记-百钱买百鸡(100文钱,必须买100只鸡,有几种方式)