Мне нужно объявить два глобальных указателя слова, указывающих на два массива. Насколько мне известно, глобальные средства объявляются в .data. Это верно? Что такое код для объявления этих указателей dword, чтобы они были инициализированы на 0 в сборке x86 с использованием синтаксиса NASM и Intel?Как объявить глобальный указатель слова в x86?
ответ
Мне нужно объявить два глобальных указателя слова, указывающих на два массива.
Это просто, если я правильно понимаю, при условии, что они означают глобальны, как и все файлы, сделать файл с именем pointers.asm
или что-то и типа:
[section] .bss
global _pointer1, _pointer2
_pointer1 resd 4 ; reserve 4 dwords
_pointer2 resd 4
Мы используем .bss
раздел, потому что память установлена к нулю, так, когда вы используете его ваши переменные 0 initialized
Или вы могли бы просто использовать .data
раздел, если вы хотите и инициализировать каждый элемент нулю себя:
[section] .data
global _pointer1, _pointer2
_pointer1 dd 0,0,0,0
_pointer2 dd 0,0,0,0
Также еще использует .data
раздел, это может быть сделано, как это позволяет задать размер буфера как с .bss
секции:
[section] .data
global _pointer1, _pointer2
_pointer1 times 4 dd 0
_pointer2 times 4 dd 0
Независимо от того, как вы решите это сделать , чтобы использовать указатель на массив, объявленный в глобальном масштабе в отдельном файле:
[section] .text
global _main
extern _pointer1
bytesize equ 4 ; dword = 4 bytes
_main:
; write each element of the array
mov dword [_pointer1 + 0 * bytesize], 0xa
mov dword [_pointer1 + 1 * bytesize], 0xb
mov dword [_pointer1 + 2 * bytesize], 0xc
mov dword [_pointer1 + 3 * bytesize], 0xd
; read each element of the array
mov eax, [_pointer1 + 0 * bytesize]
mov eax, [_pointer1 + 1 * bytesize]
mov eax, [_pointer1 + 2 * bytesize]
mov eax, [_pointer1 + 3 * bytesize]
ret
Это основная программа возвращается с 0xd
или 13
, хранящегося в eax
, надеюсь, посмотрев на это, вы сможете понять, что происходит.
- 1. Как объявить внешний указатель char?
- 2. Глобальный статический указатель Проблема
- 3. Глобальный указатель в DLL
- 4. Как объявить глобальный объект списка
- 5. Как объявить указатель (byte ^)?
- 6. печати глобальный указатель дает CoreDump
- 7. Как объявить глобальный статический класс в Java?
- 8. Как объявить глобальный массив в VBScript
- 9. Как объявить глобальный int в приложении iPhone
- 10. Глобальный указатель-указатель const в C++
- 11. Как инициализировать глобальный указатель const?
- 12. Как объявить экземпляр UIImageView как глобальный?
- 13. Глобальный указатель в связанном списке
- 14. Глобальный указатель файла?
- 15. C++ глобальный указатель?
- 16. Необходимо повторно объявить глобальный контекст?
- 17. Как объявить глобальный массив один раз
- 18. Объявить структуру как указатель, возможно?
- 19. Как объявить глобальный многомерный массив Переменная
- 20. как объявить глобальный регистр поплавка для ARMCC
- 21. В Swift как объявить ссылку на глобальный указатель, объявленный в объектно-c-коде?
- 22. Глобальный указатель в C не обновляется правильно
- 23. объявить n-указатель в C
- 24. объявить указатель, если заявление
- 25. Объявить глобальный массив из функции в C
- 26. C++ - глобальный указатель на функцию
- 27. Как объявить указатель на метод в Go
- 28. Как объявить C++ указатель в C#
- 29. Как объявить указатель на void в C#
- 30. Используя глобальный массив как указатель, C
@ Z̷͙̗̻͖̣̹͉̫̬̪̖̤͆ͤ̓ͫͭ̐͜͞αлγo. Да, я знаю, что могу это сделать Google. Но я не могу найти ответ, который я ищу. Вот почему я задал вопрос. И да, я знаю, что речь идет не только о одном вопросе, но все они подходят друг другу. – CarrotSlat
Да, но * «Что означает слово dword? ... Что это значит, когда его указатель?» * Они оба доступны как для Google, так и для StackOverflow. –
@ Z̷͙̗̻͖̣̹͉̫̬̪̖̤͆ͤ̓ͫͭ̐͜͞αлγo. Хорошо, это может быть, но я не могу найти никаких объявлений нигде. Я изменил вопрос. – CarrotSlat