본문 바로가기

Computer Science

유저모드와 커널모드 OS는 수퍼바이저 모드, 유저 모드, OS 모드, 통신 모드의 4가지 모드가 있다. 유사하게, 프로세스는 CPU의 유저모드와 커널모드에서 동작할 수 있다.그래서 OS의 유저 모드와 CPU의 유저 모드가 혼동될 수 있다.여기서 내가 알고 싶은건 CPU의 유저 모드임. 붉은 색 부분이 커널모드, 초록색 부분이 유저 모드를 보여준다.(win7에서 관리자로 로그인한 경우임) 유저 모드 - 임의로 실행시킨 특정 프로그램 (win32 API로 만든)을 말한다. - MS 프린터, MS 워드 등 - 유저 모드는 사용이 제한적이다. - 윈도우는 프로세서의 메모리 보호 서비스를 사용하여 악성 프로그램이 다른 시스템을 방해하는 것을 예방한다. - 다시 말해, 사용자는 커널에 의해 사용되는 메모리 영역에는 접근할 수 없다. .. 더보기
[ARM] 입력받은 숫자의 합을 2진수로 출력하기 .text _start: .global _start mov r0, #0 mov r2, #1 mov r7, #3 ldr r1, #3 mov r6, #0 mov r8, #128 mov r9, #7 swi 0 ldrb r5, [r1] LOOP: CMP r5, #10 BEQ cal CMP r5, #49 BLT LOOP2 CMP r5, #56 BGT LOOP2 SUB r5, r5, #48 ADD r6, r6, r5 LOOP2: mov r0, #0 mov r2, #1 mov r7, #3 ldr r1, =buf swi 0 ldrb r5, [r1] B LOOP cal: AND r5, r6, r8 lsr r5, r9 lsr r8, #1 mov r0, #1 mov r2, #1 mov r7, #4 ADD r5, r5, #4.. 더보기
[ARM] 입력받은 문자열중 숫자만 출력하기 .text_start: .global _startmov r0, #0ldr r1, =bufmov r2, #1mov r7, #3swi 0ldrb r5, [r1]LOOP:CMP r5, #10BEQ exitCMP r5, #49BLT LOOP2CMP r5, #57BGT LOOP2mov r0, #1mov r2. #1mov r7, #4swi 0LOOP2:mov r0, #0ldr r1, =bufmov r2, #1mov r7, #3swi 0ldrb r5, [r1]B LOOPexit:mov r0, #0mov r7, #1swi 0.data.alignbuf: .skip 4.end 더보기
[ARM] Hello World 출력하기 .text _start: .global _start @ sys_write ( fd, pstr, len ) @ r7=4 r0 r1 r2 mov r0, #1 @ fd 더보기
[ Error LNK2019 ] Link Error 발생시 확인해볼 것들 컴파일러가 알려주는 Error 중에서 가장 싫어하는 것이 무엇이냐고 묻는다면, 나는 서슴없이 LNK2019라고 대답할 것이다. 이것만큼 짜증나는 에러가 별로 없다. 보통 이 에러는 셋팅을 잘못해서 생기는 경우가 대부분이므로 발생할때마다 그 상황에 맞추어서 무엇이 문제인지를 찾아내야 한다. 프로그래밍 언어 문법 틀리는 것을 해결하는 것처럼 "일반적인 해결책"이 존재하지 않는다는 점이 이 에러가 싫은 가장 큰 이유이다. (정말 싫어 ㅠ_ㅜ) 결국 case by case 로 문제를 해결해야 하기 때문에 이제 생각날때마다 또는 LNK2019 에러를 맞을 때마다 이 포스트에 추가하겠다. 아래는 LNK2019 에러가 떳을 때 점검해보는 것이 좋은 셋팅들이다. 1. LIB 파일을 추가하지 않았는지 확인해보라! 필요한.. 더보기