Linux за българи: Форуми

Програмиране => Общ форум => Темата е започната от: iskren в Jan 27, 2009, 14:54



Титла: tasm за linux
Публикувано от: iskren в Jan 27, 2009, 14:54
Здравейте,

Искам да попитам дали има асемблер, подобен на tasm под линукс. Значи по принцип разгледах репото и асемблери намерих, но искам някой, който да може да компилира следния код:

Код:
.model small
.stack
.data
message   db "Hello world, I'm learning Assembly !!!", "$"

.code

main   proc
   mov   ax,seg message
   mov   ds,ax

   mov   ah,09
   lea   dx,message
   int   21h

   mov   ax,4c00h
   int   21h
main   endp
end main
Не разбирам много от асемблери, но трябва да си напиша проект за университета, и понеже там има tasm трябва да се компилира на него. Пробвах със as, nasm, yasm но изглежда те използват друг предпроцесор, който не харесва директивите в този код (за сегмента за стек, данни).


Титла: Re: tasm за linux
Публикувано от: iskren в Jan 27, 2009, 16:56
Пробвах да използвам wine за да пусна tasm - обаче ми дава
Код:
wine: ... because vm86 mode is not supported on this platform.
това разбира се след като оправих проблема с достъпването до първите адреси

После отворих някакъв туториал от http://asm.sourceforge.net/intro/hello.html ($2) обаче при линкване дава следния проблем:
Код:
$ nasm -f elf -o t3.o t3.asm
$ ld -e _start -o t3 t3.o
ld: i386 architecture of input file `t3.o' is incompatible with i386:x86-64 output

май пропуснах да спомена че съм със 64битова операционна система...

Някой може ли да ми каже някакъв начин да пиша на асемблер, след което да пусна написаното :) Проекта ще е нещо простично - няма да използвам нищо екзотично.


Титла: Re: tasm за linux
Публикувано от: task_struct в Jan 27, 2009, 17:25
Здравей, виж nasm дали няма опция за архитектура, за която да компилира. Иначе незнам колкото ти е мощен, компютъра, но ако нищо друго не стане, може да си сложиш уин на виртуална машина


Титла: Re: tasm за linux
Публикувано от: gat3way в Jan 27, 2009, 17:38
Има nasm, но поради ред причини това няма да се компилира. Синтаксисът е малко по-различен, секциите са малко по-различни (няма .code има .text). Обаче най-вече това нищо няма да направи - това е код, който работи под ДОС в 16-битов real mode.

Linux въобще не прихваща INT 21h и не ти осигурява това API.

Така например:

mov   ax,seg message
mov   ds,ax

mov   ah,09
lea   dx,message
int   21h

Няма да направи нищо - със сигурност няма да изпише на екрана този стринг.



Титла: Re: tasm за linux
Публикувано от: iskren в Jan 27, 2009, 17:53
@task_struct
1. Има опции за bin, elf, aout формат като нито една не върши работа, иначе за архитектура няма опции
2. Да и аз си го мислих това, но малко ме мързи да инсталирам цял windows. Освен това имам опасения че процесора ми не поддържа виртуализация.

@gat3way
dosbox ще свърши ли работа? Иначе ще опаковам освновните OS примитиви във функции за да може лесно да се портне.

::edit:: всъщност dosbox свърши отлична работа. Инсталирах си tasm и после успях да подкарам програмата от първия туториал. Мисля че за целите които си поставям ще ми свърши отлична работа. Мерси на всички за помощта!