Re: [問題] open

看板ASM (組合語言)作者 (if(Ithink) exist; )時間17年前 (2007/08/28 22:31), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
※ [本文轉錄自 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,
請會asm的大大幫我看一下原文的syscall 在幹嘛..thanks
08/28 22:25
-- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.64.174.93
文章代碼(AID): #16r374PW (ASM)
文章代碼(AID): #16r374PW (ASM)