[asm\linux] blad podczas linkowania

Odpowiedz Nowy wątek
2005-08-20 15:23
0

umiescilem pytanie w dziale newbie. nikt nie odpowiedzial. myslalem, ze to latwe pytanie.

segment .data
napis db "karol", 0xA
dlugosc equ $-napis

segment .text
global _start
_start:
mov AX, 4
mov BX, 1
mov CX, napis
mov DX, dlugosc
int 0x80

mov ax, 1
mov bx, 0
int 0x80

podczas linkowania wyskakuje mi blad "a.asm:(.text+0xa): relocation truncated to fit: R_386_16 against `.text'" co jest nie tak? (kompilacja w NASM)

Pozostało 580 znaków

2005-08-20 20:52
0

W newbe ci nie powiedzieli, bo assembler sam w sobie nie jest uważany za coś dla nowych :] Nie podoba mi się

napis db "karol", 0xA

i

int 0x80

Nie próbowałeś użyć po prostu zwykłych wartości hexowych, jak naprzykład 0Ah? To mógł być błąd bo takie wartości z "x" są z reguły używane przy okraślaniu adresów w pamięci...


programowanie to sztuka bardzo życiowa... Wciąż trzeba kombinować..

Pozostało 580 znaków

2005-08-20 22:22
0
Dream Maker napisał(a)

Nie próbowałeś użyć po prostu zwykłych wartości hexowych, jak naprzykład 0Ah? To mógł być błąd bo takie wartości z "x" są z reguły używane przy okraślaniu adresów w pamięci...

?

A problem ... to nie jest program 32 bitowy? Bo jesli tak to nie mozesz wrzucac adresow ktore sa 32 bitowe do 16 bitowych rejestrow.

np zamiast

mov DX, dlugosc

zrob

mov EDX, dlugosc

ew

mov DX, word dlugosc

Jakby to byly wartosci, np [dlugosc] to kompilator by nie protestowal, tylko wrzucil 16 bitow z adresu dlugosc do dx. Moze pomoze.


Pozostało 580 znaków

2005-08-20 23:26
0

sprawdzielm z word i [dlugosc], nie dziala. kompiluje tak:
n.a.s.m. -f elf plik.asm
ld -o prog plik.o

Pozostało 580 znaków

2005-08-21 20:48
0

Zamień wszystkie ax, bx, cx, dx na eax, ebx, ecx, edx


Jest jeszcze jeden błąd :)
Unix is user friendly. It's just very particular about who it's friends are.

Pozostało 580 znaków

2005-08-21 21:15
0

ale wlasnie o to mi chodzi, zeby byly 16-bitowe. z 32-bitowymi nie byloby problemow.

Pozostało 580 znaków

2005-08-22 22:21
0
Karolaq napisał(a)

ale wlasnie o to mi chodzi, zeby byly 16-bitowe. z 32-bitowymi nie byloby problemow.

Pod linuksa 16-bitowy? 8-0
Można wiedzieć po co?


Jest jeszcze jeden błąd :)
Unix is user friendly. It's just very particular about who it's friends are.

Pozostało 580 znaków

2005-08-23 00:55
0

no nie wiem. tak zeby programy mniej zajmowaly :d ale czy to oznacza, ze sie nie da napisac na obecnego linuksa 16-bitowej aplikacji?

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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