본문 바로가기

전체 글

(518)
[Arm 아키텍처] DSB 배리어(Barrier) (Arm 강의) Arm 아키텍처에서 제공하는 배리어 중에서 DSB 배리어도 중요합니다. DSB 는 DMB와 ISB의 기능을 합쳐 놓은 배리어입니다. 더 자세한 내용은 아래 강의에서 확인할 수 있어요.
[Arm 프로세서] ISB 배리어 (Arm 강의) Arm 아키텍처에서 제공하는 배리어에서 ISB 배리어도 많이 사용됩니다. ISB 배리어를 사용하면 메모리에 접근하는 STR, LDR 명령어 이외의 다른 명령어 간의 순서를 보장합니다. 더 자세한 내용은 아래 강의에서 확인할 수 있어요.
[Arm 아키텍처] DMB 배리어(Barrier) (Arm 강의) Arm 아키텍처에서 제공하는 배리어 중의 기본은 DMB 배리어입니다. DMB 배리어를 사용하면 메모리에 접근하는 STR, LDR 명령어 간의 순서를 보장합니다. 더 자세한 내용은 아래 강의에서 확인할 수 있어요.
[Arm 아키텍처] 배리어(Barrier) 소개 (Arm 강의) 메모리 리오더링을 방지하려면 메모리에 접근하는 명령어의 순서를 보장해야 합니다. 메모리 리오더링으로 소프트웨어의 버그가 발생할 수 있기 때문입니다. 이번 강의에서는 배리어(Barrier)를 소개합니다.
[Arm 아키텍처] 메모리 모델과 배리어는 왜 알아야 할까 (Arm 강의) 메모리 모델과 배리어는 시스템 소프트웨어 개발자가 알아야 할 고급 지식입니다. 아래 링크에서는 메모리 모델과 배리어를 왜 알아야 하는지 설명합니다:
[Armv7-A] 익셉션 유발 시: SPSRs 레지스터 업데이트 방식 (동작모드, Arm) User 모드에서 Data abort를 유발하는 동작 코드 리뷰  1. Data abort 익셉션이 유발되면 0xFFFF0010 주소로 프로그램 카운터가 분기합니다.NSR:FFFF0000|EA0003FF   b       0xFFFF1004    ; vector_rst NSR:FFFF0004|EA000465   b       0xFFFF11A0    ; vector_und NSR:FFFF0008|E59FFFF0   ldr     pc,0xFFFF1000 NSR:FFFF000C|EA000443   b       0xFFFF1120    ; vector_pabt >> NSR:FFFF0010|EA000422   b       0xFFFF10A0    ; vector_dabt 이 때 CPSR과 SPSR_abt ..
[Arm][AAPCS] 스택 오염이 발생한 후에는 시스템은 어떻게 동작할까 스택 오염이 발생한 후에는 시스템은 어떻게 동작할까요? Arm 프로세서가 스택 오염을 바로 감지하고 익셉션을 유발하면 좋겠지만, 스택에 저장된 데이터가 오염되는 패턴을 예측할 수 없으니 어떻게 오동작할지 예상하기 어렵습니다. 가장 대표적인 증상은 'Invalid branch'인데, 스택에 저장된 링크 레지스터의 값이 오염됐으므로, 오염된 값으로 프로그램 카운터를 브랜치하다가 메모리 어보트 익셉션이 유발됩니다. 소프트웨어 개발자들이 사용하는 용어로 '크래시가 발생'하게 됩니다. 그림 8.1에서 스택 오염으로 오동작하는 상황을 어셈블리 명령어와 함께 설명하겠습니다.01 NSR:C0BDB698|E92D4800  schedule: push    {r11,r14} ... 02 NSR:C0BDB718|E24BD00..
[Arm][AAPCS] 스택 오염(Stack Corruption)이란 스택에 저장된 레지스터나 변수의 값이 예상치 않은 값으로 변경되는 현상을 스택 오염이라고 합니다. 스택 오염이 발생하는 단계를 설명하기 전에 정상적인 과정으로 스택에 저장된 데이터를 저장하고 로딩하는 단계를 알아보겠습니다. 함수를 호출할 때는 일반적으로 다음과 같은 동작을 수행합니다.   링크 레지스터의 값을 스택 공간에 저장    함수에 위치한 어셈블리 명령어 실행  스택에 저장된 링크 레지스터의 값을 읽어 PC에 다시 로딩 만약 스택 공간에 저장된 링크 레지스터 값이 예상 밖의 다른 값으로 바뀌면 어떻게 동작할까요? 바뀐 다른 값(주소)을 PC에 로딩하게 되며, 정상적으로 서브 루틴으로 분기하는 대신 이상한 주소로 점프를 하게 됩니다. 스택 오염이 발생하는 단계을 세분화하면 다음과 같습니다. ..