Re: [問題] open
※ [本文轉錄自 C_and_CPP 看板]
作者: hikaru06 (if(Ithink) exist; ) 看板: C_and_CPP
標題: Re: [問題] open
時間: Tue Aug 28 22:16:23 2007
※ 引述《erspicu (lpo)》之銘言:
: fd = open(*filename, O_RDWR | O_BINARY | O_CREAT, 0444);
: 對這個open參數還不是非常了解,不知道能不能以 fopen 來替代?
: 因為我在編譯的時候顯示O_BINARY沒有定義(找尋過,是定義在fcntl.h裡面,也include了)
: ,我直接把它給移除掉,不知道有沒有什麼不良影響
: (arm-eabi的io讀寫好像都一律視同binrary模式),因為是以arm-eabi工具來編譯,
: 可能是條件比較特殊還是怎樣,原因還在追...
: 是想問說能不能以 fd = fopen ("xxx","wb") 來替代 ?
handle_t open(const char *name, int flags, ...)
{
return syscall(SYSCALL_OPEN, (void *) &name);
}
handke_t type 為int
因此用法跟 fopen 大不同唷~~ 可以去看一下fopen 的寫法
光是return value (FILE *) 以及功能都有差異
open return 為一個int
至於 syscall的運作 我看不懂想請教會asm的大大
到底是什麼神聖return 呢
__declspec(naked) int syscall(int syscallno, void *params)
{
__asm
{
mov eax, dword ptr ds:[PEB_ADDRESS + 4]
test eax, eax
jz slow_syscall
push ebp
mov ebp, esp
mov eax, 8[ebp]
mov edx, 12[ebp]
mov ecx, offset sys_return
sysenter
sys_return:
pop ebp
ret
slow_syscall:
push ebp
mov ebp, esp
mov eax, 8[ebp]
mov edx, 12[ebp]
int 48
leave
ret
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.64.174.93
→
08/28 22:25,
08/28 22:25
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.64.174.93
ASM 近期熱門文章
PTT數位生活區 即時熱門文章
-4
30