Using System Calls

The Linux system calls are located at interrupt 0x80. 

When the INT instruction is performed, all operations transfer to the system call handler in the kernel. When the system call is complete, execution

transfers back to the next instruction after the INT instruction (unless, of course, the exit system call is performed).

the EAX register is used to hold the system call value. 

This value defines which system call is used from the list of system calls supported by the kernel.

movl $1, %eax
int 0x80

After placing the system call value in the EAX register,
the INT instruction is performed, using the vector value for the kernel system calls (0x80).

System call input values

The order in which the system calls expect input values is as follows:
. EBX (first parameter)
. ECX (second parameter)
. EDX (third parameter)
. ESI (fourth parameter)
. EDI (fifth parameter)
 
System calls that require more than six input parameters use a different method of passing the parameters to the system call. 
The EBX register is used to contain a pointer to the memory location of the input
parameters, stored in sequential order.
The system call uses the pointer to access the memory location to read the parameters.

ssize_t write(int fd, const void *buf, size_t count);
Using this convention, the input values would be assigned to the following registers:
❑ EBX: The integer file descriptor
❑ ECX: The pointer (memory address) of the string to display
❑ EDX: The size of the string to display
.section .data
output:
.ascii “This is a test message.\n”
output_end:
.equ len, output_end - output
.section .text
.globl _start
_start:
movl $4, %eax
movl $1, %ebx
movl $output, %ecx
movl $len, %edx
int $0x80
movl $1, %eax
movl $0, %ebx
int $0x80
The file descriptor value for the output location is placed in the EBX. Linux systems contain three special
file descriptors:
❑ 0 (STDIN): The standard input for the terminal device (normally the keyboard)
❑ 1 (STDOUT): The standard output for the terminal device (normally the terminal screen)
❑ 2 (STDERR): The standard error output for the terminal device (normally the terminal screen)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Farmwang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值