我試圖使用內聯彙編... 我讀了此頁http://www.codeproject.com/KB/cpp/edujini_inline_asm.aspx但我無法理解傳遞給我函數的參數。在C/C++中使用內聯彙編
我正在寫一個C寫的例子..這是我的函數頭:
write2(char *str, int len){
}
這是我的彙編代碼:
global write2
write2:
push ebp
mov ebp, esp
mov eax, 4 ;sys_write
mov ebx, 1 ;stdout
mov ecx, [ebp+8] ;string pointer
mov edx, [ebp+12] ;string size
int 0x80 ;syscall
leave
ret
什麼我必須做的傳遞代碼到C函數...我正在做這樣的事情:
write2(char *str, int len){
asm ("movl 4, %%eax;"
"movl 1, %%ebx;"
"mov %1, %%ecx;"
//"mov %2, %%edx;"
"int 0x80;"
:
: "a" (str), "b" (len)
);
}
這是因爲我沒有輸出變量,所以我怎麼做處理? 此外,使用此代碼:
global main
main:
mov ebx, 5866 ;PID
mov ecx, 9 ;SIGKILL
mov eax, 37 ;sys_kill
int 0x80 ;interruption
ret
我怎樣才能把這些代碼嵌入在我的代碼..所以我可以要求PID給用戶..這樣的.. 這是我的預編碼
void killp(int pid){
asm ("mov %1, %%ebx;"
"mov 9, %%ecx;"
"mov 37, %%eax;"
:
: "a" (pid) /* optional */
);
}
你想傳遞一個輸出參數,以及str,len?,或者你的意思是你想發送一個文件描述符,你想寫str? – Zimbabao 2011-02-27 05:55:36
我只是想傳遞我的字符串指針和我的字符串長度......就像它在程序集代碼中看起來一樣......所以,只使用系統調用,我可以將我的字符串打印到標準輸出。 – RodrigoCR 2011-02-27 06:07:22