| [ CnUnix ] in KIDS 글 쓴 이(By): guest (x86) <61.74.154.218> 날 짜 (Date): 2003년 5월 23일 금요일 오후 05시 00분 04초 제 목(Title): [Q] x86 assembler관련 보드의 제목과 맞지 않지만... LinuxBIOS의 source중 일부를 windows환경으로 가져와서 다른 코드에 넣고 있는데요, x86 assembler에 익숙치 않아서 고전하고 있습니다. linuxbios의 source중 아래 코드는, linux 커널을 메모리의 0x100000에 올려놓은 후 'jump'하는 부분인데, c code내에서 inline assembler로 처리되어 있습니다. __asm__ __volatile__("movl $0x90000, %%esi\n\t" "movl $0, %%ebx\n\t" "ljmp $0x10, %0\n\t" :: "i" (0x100000)); 역어셈블 해보면.. 1b6: be 00 00 09 00 mov $0x90000,%esi 1bb: bb 00 00 00 00 mov $0x0,%ebx 1c0: ea 00 00 10 00 10 00 ljmp $0x10,$0x100000 이 코드를 windows환경으로 가져와서 동일한 일을 해주도록 해야 하는데, 1. Microsoft compiler에는 'ljmp'란 mnemonic이 없고, 2. 'ljmp $0x10, 0x1000000'의 의미도 정확히 의미도 모르겠네요. Art of Assembly나 MASM등 관련 자료를 뒤져서 공부를 하고는 있지만, 아직 감이 안잡힙니다. gas reference manual은 어디서 구할수 있는지요. 검색하면 공장에서 가스 다루는 기계의 manual들이 나오네요 -..- 감사합니다. |