c 언어 가 메모리 주소 에 대한 직접 조작 (ARM 읽 기)
방금 이것 을 보고 깜짝 놀 랐 습 니 다. 예전 에 들 어 본 적 이 없고 여기 서 이렇게 했 습 니 다. 이것 이 바로 c 언어 에서 메모리 에 대한 직접적인 할당 입 니 다. 이상 의 문 구 는 정말 특색 이 있 습 니 다. 이렇게 매크로 를 사용 하여 아래 에서 자 리 를 옮 기 는 작업 을 했 습 니 다. 이렇게 규범화 되 었 습 니 다.
예 를 들 어 우 리 는 특정한 수의 중간 7, 6, 5 위 를 각각 011 로 설정 해 야 한다. 이것 은 보통 x | = 0x 0110000 이 아 닙 니 다.이렇게 x | = (3 < 5);10 진법 이 16 진법 보다 보기 편 하고 검사 하기 편 하 다 는 것 이 장점 이다.
키워드 volatile: (변 하기 쉬 운) volatile 로 정 의 된 변 수 는 이 변수 가 예상 치 못 하 게 변 할 수 있다 는 것 이다. 그러면 컴 파일 러 는 이 변수의 값 을 가정 하지 않 을 것 이다.정확히 말 하면, 최적화 기 는 이 변 수 를 사용 할 때, 레지스터 에 저 장 된 백업 대신 이 변수의 값 을 조심스럽게 다시 읽 어야 한다.마치 매번 조작 할 때마다 갱신 하 는 것 처럼 원자 조작 과 유사 한 기능 이다.
뒤에 있 는 주 소 는 ARM 매 뉴 얼 을 찾 아서 얻 은 것 입 니 다. 주석 은... 레지스터 이지 만 이것 은 우리 가 이해 하 는 CPU 의 레지스터 (주 소 를 찾 을 수 없습니다) 와 다 릅 니 다. 여기 가 바로 메모리 주소 입 니 다. (외부 레지스터, 주소 지정 방식 은 메모리 주소 지정 방식 과 같 습 니 다.)
여기 상단 코드
#include
int main()
{
void (* signal (int sign,
void(*handler)(int))) (int);//
void (* signal (int ,
void(* )(int))) (int);
* (volatile unsigned *)0x0012ff7c = 0x12345;
4. 567913. vc 컴 파일 이 통과 되 었 습 니 다. 주의해 야 할 것 은 위의 지침 의 성명 입 니 다. 이 물건 은 아마 본 적 이 없 을 것 입 니 다. 이것 이 바로 고급 지침 성명 입 니 다. 지침 은 C 언어의 정수 이 고 유연성 이 있 으 며 변화 가 많 습 니 다.요 며칠 동안 의 필 기 를 끝내 고 ARM 을 계속 공부 하 러...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.