2014-02-11 9 views
0

이 선언을 통해 나는 86 어셈블리을 공부하고, 나는 왔어요 :다중 'DUP'가있는 x86 배열 선언 - 어떤 기능을 수행합니까?

array1 DB 5 DUP(2 DUP('*')) 

이 선언은 무엇입니까? 크기와 DB * 5 * 2 = 10array1라는 배열 용

  1. 를 할당 공간, 10 개 * 소자.

  2. 크기가 DB * 5 및인 ærray1이라는 배열에 대한 공간을 할당합니다. 이것은 5 * 요소가 버려진다는 것을 의미합니다.

  3. 크기 [5][2] 5 개 {'*', '*'} 요소, array1라는 다차원 어레이 할당.

그래서,

char array1[10] = {'*', '*', '*', '*', '*', '*', '*', '*', '*', '*'}

이 선언과 동일 또는 그것은

char array1[5] = {'*', '*', '*', '*', '*', '*', '*', '*', '*', '*'}

에 해당?

아니면 :

char array1[5][2] = {{'*', '*'}, {'*', '*'}, {'*', '*'}, {'*', '*'}, {'*', '*'}}

?

+0

'DB'는 각 원소가 하나의 바이트라는 것을 의미하기 때문에 거의 모든 종류의'int' 배열과 동일하지는 않습니다. – Michael

+0

@Michael : whoops, 질문 수정 –

+1

대부분의 어셈블리 언어에는 실제로 다차원 배열 개념이 없습니다. 또한, 일반적으로 char 배열 [10]과 char 배열 [5] [2]는 똑같이 메모리에 배치 될 것입니다. 타입 차이는 상위 레벨 언어의 추상입니다. 대개 원래 구문은 바이트 수가 항상 짝수인지 확인하기 위해 바이트 쌍의 배열 개념을 표현하기위한 것입니다. 이렇게하면 편리하고 쉽게 37 쌍까지 프로그램을 확장 할 수 있습니다. – twalberg

답변

1

주석에 따르면이 선언은 메모리에 연속 된 10 개의 * 문자 바이트가있는 배열을 할당합니다.