11. 어셈블러 지시문

11.1. 레이블

  • label(INNER1)

이것은 분기 명령어에서 사용할 레이블을 정의합니다. 따라서 코드의 다른 곳에서 b(INNER1) 을 쓰면 실행이 그 label 지시문 다음 명령어부터 계속됩니다.

11.2. 인라인 데이터 정의하기

다음 어셈블러 지시문들은 어셈블러 코드 블록에 데이터를 내장하기 쉽게 해 줍니다.

  • data(size, d0, d1 .. dn)

data 지시문은 메모리에 데이터 값 배열을 생성합니다. 첫 번째 인수는 이어지는 인수들의 바이트 단위 크기를 지정합니다. 따라서 아래 첫 번째 문장은 어셈블러가 세 개의 바이트(값은 2, 3, 4)를 연속된 메모리 위치에 넣게 하고, 두 번째 문장은 두 개의 4바이트 워드를 내보내게 합니다.

data(1, 2, 3, 4)
data(4, 2, 100000)

단일 바이트보다 긴 데이터 값은 메모리에 리틀 엔디언 형식으로 저장됩니다.

  • align(nBytes)

이어지는 명령어를 nBytes 값에 맞춰 정렬합니다. ARM Thumb-2 명령어는 반드시 2바이트 정렬되어야 하므로, data 지시문 다음과 이어지는 코드 앞에서 align(2) 를 실행하는 것이 좋습니다. 이렇게 하면 데이터 배열의 크기와 무관하게 코드가 실행되도록 보장됩니다.