MIPS ASM

0

witam
mam takie pytanko , czy ktoś by mi wyjaśnił co oznacza ten zdesassemblowany kod w asm pod arch. MIPS . Kod napisany w asemblerze to
ADD $t0,$s1,$s2

a po desassemblacji
.set noreorder

dw      0x61646420
addiu   $s4,$v1,0x302c
addiu   $at,$v1,0x312c
addiu   $at,$v1,0x323b
jal     0x04280000

nie wiem czemu takie coś wychodzi z takie "prostej" instukcji dodawania

pozdrawiam

0

bardzo możliwe, że kompilator uznaje ADD z wieloma składnikami za makro... A i disassemblery są często omylne :>

0

Procesory typu RISC nie sa zbyt mile do obslugi przez asm :(
Nie pisalem dla MIPSow, ale sprawdz w dokumentacji, czy aby na pewno istnieje taka instrukcja dla procesora, czy moze jest to jedynie jakies makro twojego kompilatora.
Nawet kompilatory typu TASM/MASM staraja sie optymalizowac kod za plecami programisty, wiec moze i tutaj jest wykonywana jakas optymalizacja (dlatego lubie FASM, bo kompiluje tak jak ja chce, a nie on chce).

0

Taki maly OT:

Procesory typu RISC nie sa zbyt mile do obslugi przez asm :(

No to jak tak uwazasz, to masz problem. Bo IA32 idzie juz do lamusa. Wszystkie 64 bitowe procesory, zarowno Intela jak i AMD to RISC. Wszystkie pozostale, to juz tez dawno RISC. RISC ma mniejszy zestaw instrukcji, latwiej sie tego nauczyc - i co najwazniejsze nie ma zadnych problemow z ortogonalnoscia. Skoro w x86 moge napisac tak:

mov ebx, dword ptr [ecx]
mov dword ptr [eax], ebx

to dlaczego do diabla nie moge tak:

mov dword ptr [eax], dword ptr [ecx]

??!!

I wlasnie takie rzeczy sa najbardziej wnerwiajace w IA32 i w IA64 ich nie bedzie. No i wreszcie dorzucili predykaty, to warunki nie beda zajmowaly ponad 50 taktow, jak jest teraz (LOL).

A co do pytania - to rzeczywiscie, albo dissassembler sie myli, albo Twoj kompilator robi jakies optymalizacje, albo i jedno i drugie.

0

Taki maly OT:

Procesory typu RISC nie sa zbyt mile do obslugi przez asm :(

No to jak tak uwazasz, to masz problem. Bo IA32 idzie juz do lamusa. Wszystkie 64 bitowe procesory, zarowno Intela jak i AMD to RISC.

Chyba troszke mnie nie zrozumiales. Chodzi mi o to, ze typowe procesory RISC z kilkunastoma/kilkudziesiecioma podstawowymi rejestrami i prostymi instrukcjami, sa malo atrakcyjne dla programisty assemblera, bo wlasnie dzieki prostocie ich budowy, mozna stworzyc kompilatory, ktore ciezko bedzie przebic czlowiekowi. Przy IA32 czlowiek wciaz mial przewage (a przynajmniej zawodowcy). Przy procesorach RISC, mnogość rejestrów i prostota (a moze co bardziej istotne regularnosc budowy) instrukcji daja kompilatorom pole do popisu.

Byc moze popelnilem blad piszac "do obslugi przez asm". Raczej powinienem napisac do obslugi przez "programiste assemblera".

0

</quote>Byc moze popelnilem blad piszac "do obslugi przez asm". Raczej powinienem napisac do obslugi przez "programiste assemblera".</quote>

Ok. Teraz juz rozumiem o co Ci chodzilo. Masz racje. Sorry. Ale to kiepsko wrozy w ogole programistom asma... :(

1 użytkowników online, w tym zalogowanych: 0, gości: 1