Citat:
zvrba: OP je vrlo lijepo demantirao tvoju pogresnu pretpostavku o windozama
Samo sam rekao da je intel AT&T popularniji na *nixu nego na windozama te da na win ima 100 puta bolje razvojne alate. Nitko ga ne sprečava da na linuxu koristi intel sintaksu.
Citat:
sto se tice normalnih argumenata, ti pogotovo nemas nijedan 'normalan' argument osim osobne preferencije i subjektivne izjave da je intel sintaksa 'ljepsa'
Naveo sam neke prednosti kao što su da 99% asemblera/IDE-a/debuggera koristi intel sintaksu, ima daleko više primjera koda i dokumentacije, te je čitljivija što ce svatko potvditi tko ju je imalo koristio.
Citat:
nije argument ad hominem jer si sam priznao u ranijem clanku da "5 puta sporije se piše i 10 puta sporije cita od intelove", a kasnije jos izjavio "možda se covjek može naviknuti nakon x-sati". ako govoris iz vlastitog iskustva, onda si ZAISTA nesposoban. da ne velim glup. ono sorry, ali jesi.
"glup si" nije ad hominem argument, yeah right. Možda zato što je tako super i kul one koji je koriste treba tražiti povećalom??
Citat:
A ako cemo o ispravnom logickom argumentu u ovom slucaju, onda si TI taj koji radi gresku pogresne generalizacije. Ako je TEBI trebalo x sati da skuzis tu sintaksu i puno ti je teza na temelju cega mislis da je i OP nesposoban poput tebe?
Pa nakon 4g korištenja intel sintakse AT&T mi još uvijek izgleda u najmanju ruku kao gomila hijeroglifa. Znam dosta još iskusnijih ljudi sa slicnim razmišljanjem i mislim da nije pogrešno takvo nešto generalizirati.
Citat:
dajes bezveznu izjavu da se "gubi funkcionalnost". ajd molim te daj jedan primjer koji je moguce napraviti u intel sintaksi a nije moguce u AT&T sintaksi
Pa možda ovakvo nešto:
http://www.redhat.com/docs/man...gnu-assembler/i386-syntax.html
Citat:
The AT&T assembler does not provide support for multiple section programs. Unix style systems expect all programs to be single sections
http://www.redhat.com/docs/man.../gnu-assembler/i386-jumps.html
Citat:
Note that the jcxz, jecxz, loop, loopz, loope, loopnz and loopne instructions only come in byte displacements, so that if you use these instructions (gcc does not use them) you may get an error message (and incorrect code). The AT&T 80386 assembler tries to get around this problem by expanding jcxz foo to
jcxz cx_zero
jmp cx_nonzero
cx_zero: jmp foo
cx_nonzero:
ccc....
Citat:
ne pricamo o razvojnim alatima i linuxu nego o prednostima/nedostacima konkretne sintakse asemblera.
Ukoliko te sintaksa ogranicava na par kompajlera i 1 debugger, rekao bih da je priličan issue, zar ne?
Citat:
uostalom, ja linux zealot? gdje sam ja u ovom threadu spomenuo uopce linux?
Onaj komentar wintel86...tako tipično za linux zealot mind-set.
Citat:
bezveze skreces temu.. cini mi se da se osjecas malo inferiorno sto znas samo Intelovu sintaksu.
Xaxa :) E zvrba, evo opiči mi ovaj makro u AT&T sintaksu, baš me zanima kako to izgleda..
http://sendmefile.com/00008700
Meni se nije dalo ni pod nasm ih portat..jao bože kako bi to AT&T izgledalo...
Citat:
nasm postoji i na unixu. ne mora koristiti windoze da bi koristio nasm.
Što je samo još jedan argument da batali AT&T.
A unix nema nijedan ni približno kul nasm IDE poput recimo ovih:
http://people.freenet.de/sapero/nagoa.jpg
http://people.freenet.de/sapero/winasm.jpg
Ako mu ikad bude profesionalno trebao asm, 100 puta je vjerojatnije da će mu trebati intel sintaksa, čemu uopće gubiti vrijeme sa degenerativnim AT&T alatima.
Citat:
a argument brzine assemblera mozes bacit u wc s obzirom na brzinu danasnjih kompjutera.
Misliš? Prije 4g, moj prvi veliki projekt, jedan kul win9x backdoor, asemblirao se na Celeron 400Mhz/64Mb RAM-a čitavih........2 min :)
Tad sam rekao, vrijeme je, jebeš ga postalo je prekomplicirano, ne idem dalje dok ne kupim brži komp :D
Neki makroi (poput x_push) su komputacijski _iznimno_ intenzivni, dodaj tu još multilayer poly engine, runtime dekompresija...i cijeli build potraje poprilično. Danas se na Pentum 4 2.66GHz asemblira 15-ak sekundi ako se ne varam..što opet nije ni malo.
Ne znam zašto ti koristiš asm, ali vx-eri itekako znaju cijeniti brzinu tasm32.
Ako ne vjeruješ pošaljem ti sors :>
Citat:
a jos jedna prednost as-a je jako mali broj potrebnih direktiva da se napise funkcionalan program. npr: sljedeci kod je C funkcija koja vraca 0:
Kao prvo za takvo nešto
1) gcc bez problema generira intel sintaksu sa
-S -masm=intel switchevima
2) uopće ti ne treba AT&T sintaksa za as jer sam upravo se i sam uvjerio da as podržava i intel sintaksu:
Code:
.intel_syntax noprefix
.text
.globl _main
_main:
xor eax, eax
ret
samo
$ as kita.asm -o kita.o
$ gcc -o kita kita.o
$ ./kita$ echo $?
0
hah!
Nadalje, najmanji program na svijetu je ovo
Code:
db 0c3h
Asemblirati sa nekim asemblerom koji pljuje flat binary output (nasm, yasm..) i spremiti kao kita.com (ili još bolje, u hex editoru :). 1 bajt!!!!
Citat:
da ne govorim o sranjima tipa 'OFFSET label' (jednostavno $label u AT&T sintaksi)
Daj probaj više taj nasm, on uopće ne treba offset labela, a što se tiče tasm/masm, možeš samo lea reg, labela i asembler će ti sam generirati mov reg, offset labela
Citat:
AT&T sintaksa mi omogucava da sjednem i pisem kod i ne razmisljam previse jel mi treba OFFSET
Uvjerili smo se ti ne treba.
SEG eventualno emitiraju kompajleri, teško da će ti _ikad_ ručno zatrebat (meni barem nije).
Citat:
ponekad mozda BYTE PTR ili WORD PTR (ono, usporedi incb (%eax) sa inc byte [eax]..)
INC je instrukcija, za razliku od kuracpalac INCB. Baš je
to tipično narušavanje semantike o kojoj pričam. Kad u intelovom priručniku stoji lodsb/lodsw/lodsd, znaš da postfix služi kao indikator veličine tipa unutar same instrukcije, jer se asemblira kao jednobajtni opkod (dobro lodsw ima 66h prefix jer je 16-bitna), dok s druge strane sa AT&T nisi na čistu da li je to do same sintakse, ili se zaista radi o instrukciji koja inheretno barata sa takvim tipom podataka:
inc byte [x] ; FE 05 XXXXXXXX
inc dword [x] ; FF 05 XXXXXXXX
Nadalje intel sintaksa je u tom smislu puno generičkija:
Code:
pushw %ax
pushl %eax
vs.
Code:
push ax
push eax
Code:
mozvxz ebx, al
vs.
Code:
movzbl %al,%ebx
etc...
Nekad moraš postfiksirati kad u intelu ne trebaš (jer je informacija o tipu već sadržana u veličini operanda), a kad trebaš u intelu, trebaš i njoj, pa ti sad reci što je lakše... INCB možeš trivijalno implementirati kao makro, ako ništa drugo, a od ovog drugog ne možeš nikako pobjeći.
Citat:
ja uvijek znam sto hocu, znam kako to jednoznacno dobiti u AT&T sintaksi a asm i linker uvijek naprave pravu stvar.
Bilo kakva apstrakcija od onoga što piše u intel manualu, kroz "olakšavajuću" sintasku je totalni debilizam IMHO. Asembler je ultimativni low-level, nema tu mjesta estetskim kompromisima.
@Zevs85
zvrba veli da ja govorim sa subjektivnim argumentima, a primjeti da nijednu prednost intela koju sam naveo nije oborio, a da je usto naveo niz netočnosti u vezi intel-baziranih asemblera (gcc/as ne podržavaju .intel_syntax u potpunosti, nebuloze sa SEG i OFFSET...). AT&T je vrlo ružna i izumiruća sintaksa, a pošto gcc i as nativno podržavaju intel, to je čini i najzastupljenijom i nema jednostavno nikakvog razloga da sa AT&T gubiš vrijeme.
Što se tiče mojih estetskh perspektiva, pozivam čitatelje foruma da se izjasne što je lakše za pročitati i brže za iskodirati:
AT&T:
Code:
incb %al
incw %ax
incl %eax
intel:
Code:
inc al
inc ax
inc eax
AT&T:
Code:
leal (%ebx),%eax
leal 4(%ebx),%eax
leal 0x18(%ebx,%ecx,4),%eax
intel:
Code:
lea eax, [ebx]
lea eax, [ebx+4]
lea eax, [ebx + ecx*4 + 18h]
AT&T:
Code:
xorl eax, 8(,%ebx,4)
subl ecx, 0x1000(%eax,%ebx,4)
movl fs:0,l %eax
intel:
Code:
xor eax, [ebx*4 + 8]
sub ecx, [eax + ebx*4 + 1000h]
mov fs:0, eax
AT&T:
Code:
.equiv ble, 10
;primjer fje
.equiv var1, 8
.equiv loc, -8
.global func1
func1: enter $8, $0
fldl loc(%ebp)
leave
ret
;
intel:
Code:
ble = 10
; primjer fje
func pascal proc
arg:dword
local loc:double
fld arg
leave
ret
;
etc...