att

    0

    1답변

    바보처럼 들리 겠지만 어셈블리 언어는 처음이에요. 다음 코드는 내가 수행하려고 시도했던 것의 단순화 된 버전입니다. 1 # print.s 2 # C callable: char* print() 3 4 .data 5 output: 6 .asciz "abcd" 7 8 .text 9 .globl _printbin 10 11 _printbi

    3

    1답변

    과 관련하여 제가 질문을 통해 온 gas, 당신은 어떻게 알 수 있습니까 사용하여 간단한 부트 로더를 구축하기 위해 GNU의 바이너리 유틸리티를 사용하는 방법을 이해하는 링커는 .org를 사용하여 파일 크기를 512 바이트로 유지하면서 위치 카운터를 향상시키는 파일에 데이터를 저장할 위치를 지정합니다. 나는 이것을 할 길을 찾을 수없는 것 같습니다. 이 작

    1

    1답변

    그래서 나는 기본적으로 _memcpy에 대한 호출을 내 점프로 바꾸고 소스에 저장하려고하는 코드 동굴에서 작업하고 있습니다. 원래 조립 : 나는 & T AT, 기본적으로 내가 저장하려면이 구문 승/사투를 벌인거야 mov [esp+8], edx ; size mov [esp+4], eax ; ptr to source mov eax, [ebp+arg_4

    3

    1답변

    인텔 설명서를 읽는 것이 이해되면 "add $ 0x7f, % ebx"와 같은 명령어를 작성할 수 있어야하며 총 3 바이트로 83/0 ib로 인코딩되어야합니다. 그러나 "add", "addb"또는 "addl"을 사용하더라도이 작업을 수행하면 즉시 값을 32 비트 값으로 "승격"하고 81/0 id로 인코딩하고 6 바이트를 차지합니다. adc, sub 등과 같은

    15

    1답변

    나는이 간단한 커널 모듈 썼다 : #include <linux/module.h> // for printk() int init(void) { printk("n Kello, everybody! nn"); return 0; } void exit(void) { printk("n Goodbye now... nn"); }

    3

    2답변

    ,이 코드가 :이 코드는 작동하지 않으며 시스템의 작동을 중지 set_fs(get_ds()); // lets our module do the system-calls // Save everything before systemcalling asm (" push %rax "); asm (" push %rdi ");

    1

    1답변

    나는 86의 LEA 명령에 좋은 그립을 얻기 위해 노력하고 있어요 :이 두 줄을 감안할 때 leal (%edx, %edx, 4), %eax leal (%edx, %edx, 2), %eax , 내가 알고 : 다음 eax = edx + edx*4 과 eax = edx + edx*2 두 가지 질문이 있습니다. 첫째,이 명령어가이 예제에서와 같이 순서대로 나

    1

    1답변

    참고 : 나는 올바르게라는 서브 루틴에 대한 인수를 의미 기억, 그래서 만약 내가 BSD 기반 시스템을 사용하고 있습니다/기능 레지스터에 배치되지 스택에 밀어는 나는 조립을하려고했는데 내가 원 간단한 커널 종료 프로그램을 시도해보십시오 : .globl _start _start: movl $0x20, %eax pushl %eax

    5

    2답변

    Intel x86에서 보호 모드로 전환하려고합니다. 내가 lgdt 내 GDT를로드 한 1에 CR0의 P 플래그를 설정하고 난 함수 호출에서 돌아 왔을 때 모든 세그먼트 셀렉터는하지만, 내가 다른 함수를 호출 할 수 없거나 나는이 오류가 gdtr: .short 23 // limit gdtr_base: .long 0 // base switch_to

    2

    1답변

    IDT를 통해 커널 인터럽트를 처리하려고합니다. Linux에서 Intel x86을 사용하고 있습니다. IDT와 내 인터럽트 항목을 설정하고 인터럽트 핸들러를보기 위해 몇 가지 테스트를 시작했습니다. int $0x0을 시도하면 완벽하게 작동합니다. 즉, 처리기가 호출되었지만 푸시 된 오류 코드로 예외를 시도 할 때 무한 루프가 발생합니다. 예외가 도착하면 ,