環境: centos(6.5 64位) gcc 4.4.7 20120313 核心 2.6.32-431.el6.x86_64
對於mmap的系統呼叫引數傳遞,引數傳遞對應的暫存器如下:
void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);
addr: %rdi
length: %rsi
prot: %edx
flags: %r10d
fd: %r8d
offset: %r9
在實現自己的mmap的時候除了flags引數對應的暫存器應用層和sys_mmap不一樣外,其餘的都是對應的,
所以在下面的**中我們只用嵌入式彙編來修改flags對應的暫存器,即把flags值放入%r10d中
然後傳入$9即__nr_mmap系統呼叫號到%eax中,然後在用系統呼叫命令syscall來進行系統呼叫,返回值在
%rax中,**如下
#include #include #include #include #include #include #include void *mymmap(void *addr, size_t length, int prot, int flags,
int fd, off_t offset)
int main(int argc,char *argv)
64位機器使用PLSQL(無需安裝32位客戶端)
64位win7,本機安裝了oracle11g 64位服務端,不安裝32位客戶端的情況下使用plsql 2.解壓到 任意路徑 3.在環境變數的path裡面新增壓縮包的路徑,放到最前面。4.新增環境變數tns admin,內容是tnsnames.ora檔案的路徑 5.在plsql的首選項裡,oracle...
在64位機器使用CMake編譯32位程式
在幫 去看電影的 wsf 同學做 ddl 作業的時候,遇到以下題目 設有語句如下 char c1 char c2 6 32 位系統中下面哪一種說法是正確的?a.sizeof c1 加4 等於sizeof c2 b.sizeof c1 加6 等於sizeof c2 c.sizeof c1 大於size...
嵌入式linux 彙編碼和機器碼
使用點亮led的簡單程式分析其彙編碼和機器碼,通過直接修改bin檔案中的機器碼修改功能,點亮其他的led燈。首先修改makefile檔案把elf檔案反彙編生成dis檔案,檢視其真正的彙編指令 all arm linux gcc c o led on.o led on.s arm linux ld t...