ARM Performance Counter
코드가 느린 게 캐시 미스 때문인지, 분기 예측 실패 때문인지, 아니면 그냥 명령어 수가 많아서인지는 로그나 타이머만으로는 알기 어렵다. wall clock 시간은 "얼마나 걸렸는지"만 알려줄 뿐, "왜 걸렸는지"는 알려주지 않는다.…
코드가 느린 게 캐시 미스 때문인지, 분기 예측 실패 때문인지, 아니면 그냥 명령어 수가 많아서인지는 로그나 타이머만으로는 알기 어렵다. wall clock 시간은 "얼마나 걸렸는지"만 알려줄 뿐, "왜 걸렸는지"는 알려주지 않는다.…
C 코드를 gcc -S로 컴파일해 어셈블리 출력을 구경해본 적은 있어도, 처음부터 어셈블리만으로 프로그램을 짜서 빌드하고 실행해본 경험은 드물다. 하지만 커널의 부팅 초기 코드, 예외/인터럽트 벡터 핸들러, 컨텍스트 스위칭처럼 C로는 표현할…
ARMv8부터 새로 추가된 64비트 명령어 집합 A64(AArch64 상태에서 실행)는 기존 32비트 ARM/Thumb(A32/T32)과 문법이 상당히 다르다. 레지스터 이름, 조건 코드, 주소 지정 방식을 매번 ARM 공식 문서에서 찾아보기는 번거롭기 때문에, 자주…