[Arm프로세서] AAPCS: Armv8: 스택과 관련된 명령어 - sub
By Guillermo Austin Kim | 2021년 8월 2일 |
sub는 지정된 상수만큼 감소시키는 연산을 수행하는 명령어인데, stp 명령어 전 후로 'sub sp, sp, #16'와 같이 SP 레지스터의 값을 감소시키는 명령어를 볼 수 있습니다. 이 동작은 Armv7 아키텍처에서 배운 내용과 같으며, 다음과 같이 해석할 수 있습니다. “함수 내에 선언된 지역 변수를 사용하기 위해 스택 공간을 확보한다.” sub 명령어로 SP 레지스터의 값을 변경하는 동작은 Armv7와 Armv8 아키텍처에 같이 적용되는 내용입니다. Written by <디버깅을 통해 배우는 리눅스 커널의 구조와 원리> 저자
[Arm프로세서] AAPCS: Armv8: SP_ELn와 X30 레지스터란
By Guillermo Austin Kim | 2021년 7월 26일 |
Armv8 아키텍처에서 정의된 레지스터 중 SP_ELn와 X30 레지스터는 AAPCS와 연관된 핵심 레지스터입니다. 먼저 전체 레지스터 목록 중에서 SP_ELn와 X30 레지스터를 보겠습니다. 전체 레지스터 목록 중 SP_ELn와 X30 레지스터 다음 그림을 보면서 Armv8 아키텍처에서 정의된 레지스터 중 AAPCS와 연관된 레지스터를 알아봅시다. 그림 7.1 Armv8 아키텍처의 레지스터 목록 중 AAPCS와 연관된 레지스터(출처: ARMv8-A-Programmer-Guide.pdf) 위 그림은 Armv8 아키텍처에서 정의된 레지스터 목록입니다. 그림에서 빗금으로 표기된 박스를 보겠습니다. SP_EL1는 익셉션 레벨1에서 실행되는 SP 레지스터, SP_EL0은 익셉션 레벨0에서 실행되는 S
[ARM] tst 명령어를 실행하면 ARM CPSR 레지스터가 어떻게 변경될까?
By Guillermo Austin Kim | 2019년 2월 12일 |
tst 명령어를 실행하면 ARM CPSR 레지스터가 어떻게 변경될까? tst 명령어는 연산자와 비연산자 사이 AND 비트 연산을 수행합니다. AND 비트 연산 결과에 따라 CPSR 레지스터 Z 비트는 다음과 같이 변경됩니다.Z: 0 ( AND 비트 연산 결과가 1인 경우)Z: 1 ( AND 비트 연산 결과가 0인 경우) tst 명령어가 위와 같이 동작하는지 증명하기 위해 T32 디버거를 실행해 보겠습니다.다음 화면은 tst 명령어를 실행하기 직전입니다. NSR:80107E6C|ret_to_user_from_irq: ldr r2,[r9,#0x8]NSR:80107E70| cmp r2,#0x7F000000 ; r2,#213070
애플, 아이폰12 시리즈 발표
By eggry.lab | 2020년 10월 14일 |
루머로 유출될 대로 다 유출됐지만 어쨌든 한국 시간으로 오늘 새벽에 발표됐습니다. 발표 몇시간 전에 아예 프레스 이미지가 유출될 정도였던지라 사양도 99% 다 맞췄고 해서 안 보고 자길 잘 했습니다. 뭐 그래도 첫 5G 아이폰이라 통신사 푸시 받고 아이폰5나 6 급으로 많이 팔릴 거 같기는 한데요. 먼저 라인업 중 더 낮은 가격대를 형성하는 아이폰12와 아이폰12 미니입니다. 이 둘은 아이폰11의 후계라고 할 수 있는데, 아이폰12 프로가 크기가 커지면서 사라진 작은 크기대를 아이폰12 미니가 커버하는 식입니다. 하지만 작으면서 프리미엄인 폰을 원한 사람에게는 선택지가 사라지는 게 되겠네요. 아이폰12는 6.1인치 OLED, 아이폰12 미니는 5.4인치 OLED로, 이제 미드레인지 아이폰도 다