inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

ARM Cortex-M 프로세서 프로그래밍

s337_인라인 어셈블러

오퍼랜드 순서문의

197

신지웅

작성한 질문수 1

1

(strexb %0, %2 %1" : "=&r"(result), "=Q"(*addr): "r" ((uint32_t)value));

여기에서  %0 과 %1 이 출력 오퍼랜드이고 %2가 입력 오퍼랜드라고 하셨는데  출력오퍼인지 입력오퍼인지 어떻게 구분하는건지요?  %0하고%2 가 순서대로 result 와 addr 이고,  value 가 %1 인줄 알았는데  가운데 있는 %2가 왜 입력 오퍼랜드인지 궁금합니다.  (순서대로인줄 알았음)

임베디드 arm-architecture cortex

답변 1

0

홍영기

반갑습니다:) 신지웅님

우선 "=&r"(result), "=Q"(*addr): "r" ((uint32_t)value 는 순서대로 %0 %1 %2 로 맵핑됩니다.

그리고, 궁금하신 부분이었던

입력이냐 출력이냐는 연산 방향에 의해 결정됩니다. 예를들어 R0=1 의 경우 숫자 1이 R0 에 저장되죠?

이때 R0 는 출력 오퍼랜드로 보고 1은 입력 오퍼랜드로 바라보는 식입니다.

이번 사례에서 사용된 명령 STREXB 시놉시스 STREXB{cond} Rd, Rt, [Rn] 의 경우

연산이 Rd=[Rn] 와 [Rn]=Rt 로 각각 처리되므로

Rd 와 [Rn] 는 출력 오퍼랜드

Rt 가 입력 오퍼랜드가 되겠죠

추가 궁금한 점 있으시면 다시 댓글 남겨주세요.

0

신지웅

답변감사드립니다. 그럼 %0,%1,%2  이 숫자의 크기? 로 순서가 판별된건가요?

예를들어 (strexb %2, %1 %0" : "=&r"(result), "=Q"(*addr): "r" ((uint32_t)value)); 이면

적혀있는 순서에 상관없이  result, addr, value 에 순서대로(숫자의크기) %0 %1 %2 로 맵핑 되는것인가요? 

0

홍영기

맞습니다 :)

stm32cubeide 관련 문의

0

51

2

DMA 관련한 강의도 제작해주실 수 있으신가요 ?

0

100

1

그림들도 해석 할 수 있어야 하나요?

1

103

2

no-stlink

1

82

2

4개의 CPU 사이클이 필요한 이유

1

101

2

MAC으로 진행 질문드려요..

1

95

2

학습 진행 시, 사용하는 Board에 대한 문의 드립니다!

0

160

2

push pop 질문

1

192

2

STM32Fx Cortex ARM 프로그래밍 저자:홍봉조, 출판사:지식과 감성

0

242

1

CORTEX_02_ASSEMBLY 빌드시 에러

1

270

1

외부 ST Link 연결 이용한 SWD 방법

0

342

1

파이프라인과 명령어

1

327

1

명령어 fetch

0

238

1

lr 레지스터 LSB 값

1

261

1

Disassembly 창 문제

0

350

1

s702 강좌에서 사용한 technical reference manual 문서

1

328

1

s702에 원자적 Access 를 위한 BSRR 코드작성 부분에 대해서

1

273

1

s202 LED 점등 예제 실행시 에러

2

351

1

STM32F429I-DISC 보드의 펌웨어

2

395

1

제공되지 않은 강의교재

0

319

1

s524 테일체이닝 강의 질문

0

235

1

부트코드와 부트로더의 차이점

1

1528

1

메모리 맵 질문

0

288

1

xPSR 레지스터 플래그 값 및 기타 질문 드립니다.

1

864

2