Вы добавляете целое число постоянной времени сборки 2
. Он собирается на add si,2
.
MASM TYPE foo
- та же идея, что и C sizeof(typeof(foo))
. 1
Помните, что у вас есть масштабировать от индекса элемента до байтового смещения самостоятельно, например, увеличить указатель на 2 байта до go до следующего word
, где в C вы просто используете p++
для увеличения short *p
.
MASM также имеет sizeof
, который может дать вам размер всего массива вместо одного элемента.
Обычно вы используете add si, type some_array_name
, чтобы ваш код приращения мог автоматически изменить, если вы измените массив на dw
против db
.
Хотя в этом случае несколько бессмысленно, если вы также используете AX
вместо AL
в других инструкциях, которые фактически загружают или сохраняют от / до [SI]
.
Вы можете использовать type foo
как часть какого-либо другого выражения для вычисления размера или ограничения l oop.
Сноска 1: C / C ++ фактически не имеет ключевого слова typeof
; это расширение GNU C. Но название более понятно, чем стандартное ключевое слово C ++ 11 decltype
, которое делает то же самое.