인라인 어셈블러 (gcc 4.2.1, Mac OS 10.7.5)에서 write
시스템 호출을 호출하려고하는데 코드가 성공적으로 컴파일되지만 isn 전혀 출력이 없습니다.gcc 인라인 어셈블러 (64 비트)를 사용하여 시스템 호출을 호출하지 못했습니다.
$ ./test
:
$ gcc main.c -o test
실행 : GCC와
int main()
{
char s[] = "Test\n";
// write(1, s, 5);
asm(
"movq $1, %%rax;"
"movq $1, %%rdi;"
"movq %0, %%rsi;"
"movq $5, %%rdx;"
"syscall;"
:
: "r"(s)
: "%rax", "%rdi", "%rsi", "%rdx"
);
}
컴파일 : 이것은 전체 코드입니다
Thread 1: EXC_SYSCALL (code=1, subcode=0x1)
코드에 무슨 문제가 있습니까? 우분투 12.04 LTS로 성공적으로 실행됩니다.
감사합니다.
시스템 호출에 Linux 및 Mac OS X에서 동일한 번호가 반드시 필요하지는 않습니다. Google에 간단한 여행으로 많은 정보를 찾을 수 있습니다. 다음은 Linux에서 Mac OS X로 간단한 프로그램을 번역하는 방법을 설명하는 링크입니다. http://thexploit.com/secdev/mac-os-x-64-bit-assembly-system-calls/ –