Мой вопрос возник в процессе решения следующего упражнения:
/* Write assembly code to declare variables equivalent to the following C code: */
/* these variables are declared outside of any function */
1) static int foo[3]; /* visible anywhere in the current file */
2) static char bar[4]; /* visible anywhere in the current file */
3) char barfoo; /* visible anywhere in the program */
4) int foobar; /* visible anywhere in the program */
Мои вопросы:
Как объявить переменную видимой в любом месте программы? И чем это отличается от объявления переменной видимой в любом месте текущего файла?
На данный момент я добился следующего:
1) foo: .word 0,0,0,0
2) bar: .char 0,0,0,0,0
3)
4)
Но, как видите, у меня проблема с номерами 3 и 4? как этого добиться? Конечно, если я ошибаюсь с номерами 1 и 2, пожалуйста, поправьте меня, поскольку ясно, что я учусь: D.
Большое спасибо.
Для справки: мой вопрос напрямую связан с упражнением из главы 2 Программирование на современном языке ассемблера с помощью процессора ARM, Ларри Д. Пьятт.
Я использую ассемблер GAS.
Ассемблер специфичен для ассемблера, программы, которую вы используете. Какой ассемблер вы используете? Вы также можете посмотреть выходные данные компилятора, который вы используете как часть своей инструментальной цепочки, и увидеть, как они объявляют метку как глобальную.
Используйте
EXPORT
или.GLOBAL
- infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0489 г /…