[#1] Asembler
Witam wszystkich
Pytanie poczatkujacego
Mam następujące pytanie dotyczace uruchmiania
programow napisanych w asemblerze pod kontrola
systemu AmigaOS 3.9
Przykladowy listing
; wzor: X1*40+X1/8
; Wejscie D0-X1
; Rozmiar danej: slowo


move.w d0,d1 ;przesylamy X1 do D1
muls #40,d1 ;X1*40
divs #8,d0 ;X1/8
add.w d1,d0 ;X1*40+X1/8
rts

; wyjscie: d0=X1*40+X1/8
; rozmiar danej: slowo
Po wykonaniu asemblacji i sprawdzeniu w debugerze ASM-ONE i otrzymaniu kodu wynikowego. Chcialbym sprawdzić dzialanie programu pod systemem Amiga OS.Czy potrzebne są includy systemowe , jezeli tak to skąd je pobrać.
I w jaki sposob uruchomić zasemblowany program pod AmigaOS ?
Dziękuje

[#2] Re: Asembler

@arkarc, post #1

Raczej nie sa potrzebne, po uruchomieniu execa w oknie CLI
prawdopodobnie otrzymasz wynik. Jesli w rejestrze D0 po zakonczeniu
procedury znajdzie sie cos innego niz 0 to otworzy sie CLI i wypisze
failed return code "wynik z D0". Jesli wynikiem bedzie 0 to bedzie
"cisza"

Trzeba zapisac plik wynikowy (w AsmOne: menu Project Write/Object)



Ostatnia modyfikacja: 10.04.08 18:00
[#3] Re: Asembler

@ede, post #2

dziekuje
sprawdzilem wywolalem plik komenda z shella
execute mate_01.asm < i nic nie wypisało>
natomiast uruchamiajac program z ikony mate_01.asm
wypisało failed returncode 65576

[#4] Re: Asembler

@arkarc, post #1

A skąd bierze się wartość w d0?

[#5] Re: Asembler

@arkarc, post #3

Mialem na mysli uruchamianie z ikony - tylko jakos dwuznacznie wyszlo.

Hmm ... nie jestem wybitnym specjalista w tej dziedzinie :)
Sprobuj pozmieniac dane wejsciowe i zobacz co sie
dzieje. Wedlug mnie wynik powinien byc rowny zawartosci,
rejestru D0 po skonczeniu procedury (czyli ostatnie RTS w kodzie)
czyli jakby zamienic 65576 na hexadecymalne $00010028 i taka liczba
powinna byc w ostatnim kroku debugowania w rejestrze D0.

Na Aminecie jest maly utilek do zamiany systemow liczenia hexdec20.lha
moze sie przyda.
[#6] Re: Asembler

@arkarc, post #3

Źle to robisz. Najpierw assemblujesz program komendą a, później nagrywasz jako obiekt i dopiero ten uruchamiasz z CLI lub WB, bez execute.
Po drugie includy nie są niezbędne, ale raczej potrzebne, choćby z tego powodu, aby dołączyć kod startowy, bo takie pisanie jest conajmniej nieeleganckie. A jak przekazujesz daną wejściową, owe X1?
Po trzecie na wyjściu przekazuje się błąd AmigaDOSu właśnie poprzez d0. Należałoby użyć jakiejś funkcji wypisującej wynik.
[#7] Re: Asembler

@cholok, post #6

Rozumiem ale skąd mogę pobrać Includy do programu
ASM-ONE.
Prosze o informacje ?
Dziękuję

[#8] Re: Asembler

@Grzegorz Kraszewski, post #4

Witam!
Mam prośbę, możesz polecić mi jakąś książkę w języku polskim (jeżeli taka istnieje) o asemblerze procesorów risc. Fajnie by było gdyby dotyczyło to procesorów serii SuperHitachi np. SH-4 lub SH - 5, ale inne np. PPC też mnie interesują.
Przepraszam, że wcinam się w wątek, ale szukałem w sieci i trafiam tylko na książki o asemblerze dla serii x86. Z góry dzięki za jakąkolwiek odpowiedź.

[#9] Re: Asembler

@ender, post #8

Mam prośbę, możesz polecić mi jakąś książkę w języku polskim (jeżeli taka istnieje) o asemblerze procesorów risc

Ja takiej nie znam. Sam uczyłem się asemblera PPC z manuala Motoroli.

[#10] Re: Asembler

@arkarc, post #7

http://os.amigaworld.de/index.php?lang=en&page=12
[#11] Re: Asembler

@arkarc, post #7

jest ksiazka asm-one i motorola 68000 doligalskiego.
Do tego jest jeszcze jedna pozycja wczesniejsza,bodajze mc68000 opis rodziny.

Includes znajdziesz w rkrm lub w jakis pakietach developerskich gcc,stormc.Napewno na Developers CD.

co do generacji kodu wykonywalnego
a [enter]
potem,jak wsio ok to :
wo [enter]

wtedy juz ladnie zapisze ci plik wykonywalny.
radze jednak pamietac o kopiowaniu zawartosci rejestrow d1-a6.
a potem ich zwroceniu bo bedziesz bruzdzil w systemie.

;zaczynasz tak:
movem.l d1-a6,-(a7)

;......
;tutaj twoj kod
;......

;konczysz tak
movem.l (a7)+,d1-a6
rts

oczywiscie para movem moze sie zagniezdzac.

Ostatnia uwaga: nie sugeruj sie tym,ze na asm-one dziala,a pod systemie cos sie krzaczy.Asm-one wiele rzeczy zabezpiecza za ciebie,program wykonywalny musi jednak samemu wszystko robic.Mozesz sobie ulatwic wykorzystujac jakies gotowe startup.



ps.
w kwestii optymalizacji to:

dzielenie mozesz zastapic poprzez lsr ,jezeli jest potega liczby 2
z mnozeniem jest podobnie ,uzywasz lsl.

div i mul to najwolniejsze instrukcje m68k.



Ostatnia modyfikacja: 11.04.08 23:33
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem