реклама на сайте
подробности

 
 
> ARM assembler - работа с "С" переменными
RRaptor
сообщение Aug 23 2006, 08:54
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 3-08-06
Из: Санкт-Петербург
Пользователь №: 19 279



И опять вопрос по ассемблеру, первый этап прошел нормально, функцию определения длины строки написал (всего 19 команд), но опять появились вопросы. Есть ли возможность из ассемблера присвоить некоторое переменной заданное значение. Загрузить его можно
.extern buf
ldr R0,=buf
а как сохранить что либо в переменной buf. Похоже сохранение выполняется только командой str, но как тогда как получть адрес buf. Очевидно, что аналога команды LEA из Intel ассемблера в системе команд ARM7 нет. Можно конечно в функцию в качестве параметра передавать адрес переменной buf, но может есть решение лчше?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Ken@t
сообщение Aug 23 2006, 09:22
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 144
Регистрация: 5-08-05
Пользователь №: 7 382



Цитата(RRaptor @ Aug 23 2006, 12:54) *
И опять вопрос по ассемблеру, первый этап прошел нормально, функцию определения длины строки написал (всего 19 команд), но опять появились вопросы. Есть ли возможность из ассемблера присвоить некоторое переменной заданное значение. Загрузить его можно
.extern buf
ldr R0,=buf
а как сохранить что либо в переменной buf. Похоже сохранение выполняется только командой str, но как тогда как получть адрес buf. Очевидно, что аналога команды LEA из Intel ассемблера в системе команд ARM7 нет. Можно конечно в функцию в качестве параметра передавать адрес переменной buf, но может есть решение лчше?

Код
                mov     r0,#0x00
                ldr     r1,=__program_start
                mov     r2,#0x00
                B       L_2_MovVec
L_1_MovVec:
                ldr     r3,[R1,#+0]
                str     r3,[r0,#+0]
                adds    r1,r1,#0x04
                adds    r0,r0,#0x04
                adds    r2,r2,#0x1
L_2_MovVec:
                cmp     r2,#0xE
                bcc     L_1_MovVec

типа


--------------------
Свет мой зеркальце, скажи, да всю правду расскажи я ль на свете всех тупее, бесполезней и пьянее?
Ты - придурок. Спору нет! Но живет на белом свете вот ТАКИХ еще две трети!
Go to the top of the page
 
+Quote Post
DASM
сообщение Aug 23 2006, 09:23
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



Цитата(Ken@t @ Aug 23 2006, 13:22) *
Цитата(RRaptor @ Aug 23 2006, 12:54) *

И опять вопрос по ассемблеру, первый этап прошел нормально, функцию определения длины строки написал (всего 19 команд), но опять появились вопросы. Есть ли возможность из ассемблера присвоить некоторое переменной заданное значение. Загрузить его можно
.extern buf
ldr R0,=buf
а как сохранить что либо в переменной buf. Похоже сохранение выполняется только командой str, но как тогда как получть адрес buf. Очевидно, что аналога команды LEA из Intel ассемблера в системе команд ARM7 нет. Можно конечно в функцию в качестве параметра передавать адрес переменной buf, но может есть решение лчше?

Код
                mov     r0,#0x00
                ldr     r1,=__program_start
                mov     r2,#0x00
                B       L_2_MovVec
L_1_MovVec:
                ldr     r3,[R1,#+0]
                str     r3,[r0,#+0]
                adds    r1,r1,#0x04
                adds    r0,r0,#0x04
                adds    r2,r2,#0x1
L_2_MovVec:
                cmp     r2,#0xE
                bcc     L_1_MovVec

типа

обожаю ответы, которые ни на что не отвечают. как тогда как получть адрес buf
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 23:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.07731 секунд с 7
ELECTRONIX ©2004-2016