![](/img/trans.png)
[英]Stuck on writing a print function to convert and print binary to decimal with syscalls on NASM for x86-64 Linux system
[英]Syscalls for x86-64 Linux NASM(YASM) detailed description
我找到了x86-64模式的syscalls列表(帶參數): http : //filippo.io/linux-syscall-table/但是我在哪里可以得到這個系統調用的詳細描述?
例如下面,除了0102o(rw,create)之外,哪些標志可以用於'open'syscall,在其他情況下:只讀,只寫等。
SECTION .data
message: db 'Hello, world!',0x0a
length: equ $-message
fname db "result"
fd dq 0
SECTION .text
global _start
_start:
mov rax, 2 ; 'open' syscall
mov rdi, fname ; file name
mov rsi, 0102o ; read and write mode, create if not
mov rdx, 0666o ; permissions set
syscall
mov [fd], rax
mov rax, 1 ; 'write' syscall
mov rdi, [fd] ; file descriptor
mov rsi, message ; message address
mov rdx, length ; message string length
syscall
mov rax, 3 ; 'close' syscall
mov rdi, [fd] ; file descriptor
syscall
mov rax, 60
mov rdi, 0
syscall
基於源(可能) https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/fs/open.c如何理解它,哪個(所有打開的列表) )標志可以用嗎?
系統調用的文檔位於手冊頁的第2部分和/或源代碼的注釋中。
手冊頁以:
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int open(const char *pathname, int flags);
int open(const char *pathname, int flags, mode_t mode);
參數標志必須包括以下訪問模式之一: O_RDONLY , O_WRONLY或O_RDWR 。 這些請求分別打開文件只讀,只寫或讀/寫。
此外,零或更多文件創建標志和文件狀態標志可以在標志中按位或按鈕。 文件創建標志是O_CREAT , O_EXCL , O_NOCTTY和O_TRUNC 。
在系統頭文件中可以輕松查找這些值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.