2012-05-28 2 views
2

이 코드를 ARM 어셈블리 명령어로 변경하는 방법은 무엇입니까? 이 코드를 android kernel에서 실행하고 싶습니다. 그러나 ARM 어셈블리 명령어를 사용하는 방법을 모르겠습니다.이 코드를 ARM 어셈블리 명령어로 변경하는 방법은 무엇입니까?

#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \ 
type name(type1 arg1,type2 arg2,type3 arg3) \ 
{ \ 
long __res; \ 
__asm__ volatile ("int $0x80" \ 
     : "=a" (__res) \ 
     : "0" (__NR_##name),"b" ((long)(arg1)),"c" ((long)(arg2)), \ 
       "d" ((long)(arg3))); \ 
__syscall_return(type,__res); \ 
} 

고맙습니다. 당신은 여기에 대한 개요 얻을 수

swi 0 ; 0 is the interrupt vector for "syscall" 

:

+0

이 코드는 userspace에서 kernel syscalls를 호출하기위한 것입니다. 커널에서 syscall을 호출하고 싶습니까? 이 코드는 사용중인 ABI에 따라 ARM 어셈블리에서 다양한 방식으로 구현할 수 있습니다. – werewindle

+0

ARM 어셈블리 명령어를 사용하는 방법을 배워야 할 것 같네요. 코드를 작성할 수 있지만 지침을 사용하는 방법을 모르는 경우 여기에서 다시 변경 사항을 요청합니다. –

답변

2

은 당신이 ARM에 필요한 것은 x86에서 'INT'의 거친 동등하다 "소프트웨어 인터럽트"명령이다 OSDev Wiki on ARM

을 "안녕하세요 , world "는이 부분에서 찾을 수 있습니다. post

+0

고맙습니다. 같은 코드를 ARM에서 찾았습니다. _syscall()입니다. 위의 코드를 수정할 필요가 없습니다. – Jimmy

관련 문제