Создать ответ 
 
Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Ассемблер
Автор Сообщение
sc_maxim Не на форуме
Пользователь
**

Сообщений: 94
Зарегистрирован: 27.11.2010
Рейтинг: 1
Сказал спасибо: 1
Поблагодарили 4 раз(а) в 4 сообщ.
Сообщение: #10
RE: Ассемблер
Решил не создавать новую тему по ассемблеру. Вобщем, решил я разобраться с sh4 ассемблером и возникли некоторые неясности. Взял за основу код из dcload, собственно сам код с начальной инициализацией crt0 и dcload syscalls. В функции main сделал простенький hello-world. Вот код (пишу по памяти, т.к. нет при себе компа с тулчейном для проверки):
Код:
.global .section .text
           .global _main
_main:
            mov.l write_k,r0
            mov.l #1,r4 // Номер файла для сис.вызова write
            mov.l msg_k,r5
            jsr   @r0
            mov   #13,r6 // Длина сообщения
            nop
            mov.l write_k,r0
            mov.l #1,r4
            mov.l msg_k,r5
            jsr   @r0
            mov   #13,r6
            nop
write_k:
            .long _write
msg_k:
            .long msg
msg:
            .ascii "Hello, world!"
Программа выводит сообщение один раз, после чего вылетает с сообщением о том,
что переход в NULL не возможен. Собственно, как я понимаю,
в регистре PR содержится 0 из-за чего возникает ошибка при выполнении команды rts.
Судя по документации sh4, команда jsr перед переходом сохраняет текущее значение PC в PR для последующего возвращения,
однако этого не происходит. Проверяю все в эмуляторе lxdream в режиме интерпретатора,
т.к. нет пока возможности использовать Windows или сам Дрим.
Это я неправильно понял эту команду или все таки эмулятор сильно неточен?
Пробовал также добавить сохранение pr в стек, sts.l pr,@-r15 , но это не дало результата или опять же я не допонял как использовать.
Хотелось бы узнать о полезных советах и неочевидных нюансах дримовского ассемблера.
09.09.2013 23:31
Найти все сообщения Цитировать это сообщение
Создать ответ 


Сообщения в этой теме
Ассемблер - zzPSIXzz - 16.01.2011, 20:19
RE: Ассемблер - sc_maxim - 16.01.2011, 23:43
RE: Ассемблер - Rio - 16.01.2011, 23:58
RE: Ассемблер - zzPSIXzz - 17.01.2011, 01:03
RE: Ассемблер - sc_maxim - 17.01.2011, 01:17
RE: Ассемблер - Rio - 17.01.2011, 01:33
RE: Ассемблер - zzPSIXzz - 17.01.2011, 02:53
RE: Ассемблер - sc_maxim - 17.01.2011, 03:05
RE: Ассемблер - Rio - 19.01.2011, 16:34
RE: Ассемблер - sc_maxim - 09.09.2013 23:31
RE: Ассемблер - SWAT - 10.09.2013, 07:16
RE: Ассемблер - sc_maxim - 10.09.2013, 10:18
RE: Ассемблер - sc_maxim - 10.09.2013, 22:07
RE: Ассемблер - SWAT - 11.09.2013, 08:51
RE: Ассемблер - sc_maxim - 11.09.2013, 09:10
RE: Ассемблер - SWAT - 11.09.2013, 13:28
RE: Ассемблер - sc_maxim - 11.09.2013, 22:09
RE: Ассемблер - uncle - 19.09.2013, 17:34
RE: Ассемблер - SWAT - 19.09.2013, 20:46
RE: Ассемблер - uncle - 21.09.2013, 12:04
RE: Ассемблер - uncle - 21.09.2013, 14:10
RE: Ассемблер - SWAT - 23.09.2013, 15:24
RE: Ассемблер - uncle - 25.09.2013, 12:34
RE: Ассемблер - SWAT - 25.09.2013, 15:27
RE: Ассемблер - uncle - 25.09.2013, 15:35
RE: Ассемблер - SWAT - 26.09.2013, 08:18
RE: Ассемблер - uncle - 26.09.2013, 13:53
RE: Ассемблер - SWAT - 27.09.2013, 07:04
RE: Ассемблер - MetalliC - 27.09.2013, 14:11
RE: Ассемблер - uncle - 27.09.2013, 12:58
RE: Ассемблер - uncle - 27.09.2013, 15:30
RE: Ассемблер - MetalliC - 27.09.2013, 18:11
RE: Ассемблер - SWAT - 29.09.2013, 11:02
RE: Ассемблер - MetalliC - 29.09.2013, 14:25
RE: Ассемблер - SWAT - 29.09.2013, 19:27
RE: Ассемблер - uncle - 02.10.2013, 19:00
RE: Ассемблер - SWAT - 03.10.2013, 13:28
RE: Ассемблер - uncle - 03.10.2013, 17:34
RE: Ассемблер - SWAT - 03.10.2013, 21:00
RE: Ассемблер - SWAT - 10.10.2013, 12:01

Переход:


Пользователи просматривают эту тему: 2 Гость(ей)