Assembler:error: symbol `start32' not defined – Assembler – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Assembler:error: symbol `start32' not defined – Assembler – Fórum – Programujte.comAssembler:error: symbol `start32' not defined – Assembler – Fórum – Programujte.com

 

Jan
~ Anonymní uživatel
187 příspěvků
19. 3. 2022   #1
-
0
-
Nahlásit jako SPAM
IP: 78.45.137.–
Jerry
~ Anonymní uživatel
512 příspěvků
20. 3. 2022   #2
-
0
-

nejde to zkompilovat protože je to neuplnej kod ... něco ti tam chybí ... bylo by dobrý začít se učit tak nějak od začátku ... i když nechápu k čemu ti v roce 2022 bude 64bitovej assembler ... ty se cheš stát programátorem operačního systému ???? necháš se zaměstnat ve firmě Intel ??? protože .. dokonce i ovladače se už dneska dělaj v céčku ..

Nahlásit jako SPAM
IP: 2a00:1028:83bc:e52a:f49a:f1a2:1790:43b2...–
Jan
~ Anonymní uživatel
187 příspěvků
20. 3. 2022   #3
-
0
-

#2 Jerry
Vim ze je to neuplnej kod, je to z knihy

https://www.amazon.co.uk/Low-Level-Programming-Assembly-Execution-Architecture-ebook/dp/B073GN6V7P/ref=sr_1_2?crid=2FXQ34VYKSRFS&keywords=igor+zhirkov&qid=1647773961&sprefix=igor+zhirkov%2Caps%2C154&sr=8-2

ktera je full zde:

http://libgen.rs/search.php?req=zhirkov&lg_topic=libgen&open=0&view=simple&res=25&phrase=1&column=def

Zajima me to proto, ze jsme hracicka a zkousim neobvykle pristupy k vecem.

Je nejaky zpusob jak kod zuplnit ci alespon zkompilovat do souboru .o ktery pak nekam prilinkuji ?

Nahlásit jako SPAM
IP: 78.45.137.–
20. 3. 2022   #4
-
0
-

Začínám mít pocit, že Montezo se opět vynořil. Nebo patřím na psychiatrii že ho vidím všude.

hu

Nahlásit jako SPAM
IP: 2001:af0:ffe4:85f4:dc47:1468:b2f7:83ab...–
Jan
~ Anonymní uživatel
187 příspěvků
20. 3. 2022   #5
-
0
-

#4 hlucheucho
Kdo je "Montezo" ? Nejaky slavny nick zde ?

Ja jsem tu uplne novy...

Nahlásit jako SPAM
IP: 78.45.137.–
gna
~ Anonymní uživatel
1891 příspěvků
20. 3. 2022   #6
-
0
-

Při učení od začátku se naučíš, že instrukce jmp skočí na zadanou adresu a assembler, také zvaný jazyk symbolických adres, mimo jiné umožňuje místo adres psát symboly, které je ovšem potřeba nejdříve definovat.

    ...
    jmp mujlabel
    ...

mujlabel:
    ; sem to skoci

Tady je far jump s uvedením selektoru, který je definovaný v GDT (s komentářem x32 code descriptor), ale výsledek je stejný.

Kompletní kód po kompilaci nepřilinkuješ "někam", ale zapíšeš ho do boot sektoru disku, ze kterého nabootuješ. Proces zavádění systému je opět potřeba nejdříve nastudovat. Nicméně v téhle fázi to nic nedělá.

Nejde vzít náhodných 10 řádků z třetí kapitoly nějaké knihy a jaksi magicky to rozchodit.

Nahlásit jako SPAM
IP: 213.211.51.–
gna
~ Anonymní uživatel
1891 příspěvků
20. 3. 2022   #7
-
0
-

A i mně to "zavání" Montezem.

Nahlásit jako SPAM
IP: 213.211.51.–
Jan
~ Anonymní uživatel
187 příspěvků
20. 3. 2022   #8
-
0
-

#6 gna
Diky za vysvetleni.

To je kod na kterem jsem se poprve zaseknlu pri cteni te pekne knihy.

Poradis aspon, co je toto pred tou adresou:

(0x1 << 3)

?

Uz sem se smiril s tim, ze ten kod nerozchodim, chybi tam skoro vsechno:

.start, .data atd. mam pravdu ?

A nebudte vsichni paranoidni ohledne nejakeho Monteza,

jsem vazne novy :-)

Nahlásit jako SPAM
IP: 78.45.137.–
gna
~ Anonymní uživatel
1891 příspěvků
20. 3. 2022   #9
-
0
-

To je ten selektor.

Kompletní adresa má formát segment:offset a výsledek je segment+offset. V 32-bit režimu jsou místo segmentů selektory, takže je to selektor:offset a výsledek je bázová_adresa_selektoru+offset. Ta bázovka je definovaná v těch deskriptorech v GDT/LDT.

A většinou se pracuje jen s offsety, tj. selektor se nemění a je dán prováděnou instrukcí (kód je na cs:xxx, data jsou na ds:xxx, zásobník je na ss:xxx, ...). Když se někde píše, že adresa aktuálně prováděné instrukce je v registru eip (nebo ip/rip, teď jsme ve 32-bit, tak eip), tak ve skutečnosti je to cs:eip, ale cs nás nezajímá.

Takže pro jmp většinou definuješ jen offset: 

jmp offset
; eip = offset

Ale můžeš uvést i kompletní adresu: 

jmp selektor:offset
; cs = selektor
; eip = offset

Ten selektor má nějaký význam/formát a ve tvém případě je to teda 1<<3 (čili 8, nebo binárně 1000), což znamená toto: 

DDDDDDDDDDDDDPPT
0000000000001000

D = deskriptor 1
P = privilege level 0 (to je na další povídání)
T = table 0 (GDT)

Takže v pseudokódu to jakoby dělá toto: 

jmp GDT[1]:start32
Nahlásit jako SPAM
IP: 213.211.51.–
21. 3. 2022   #10
-
0
-

#5 Jan
Montezo je fenomén.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
Jan
~ Anonymní uživatel
187 příspěvků
21. 3. 2022   #11
-
0
-

#10 hlucheucho
To ja jsem  take fenomen na math.stackexchange.com ale ne tu :-)

Poradite mi nekdo jeste co dela

or al,1

a

align ?

Ctu tu knihu od Zhirkova ale je to tezke cteni, je toho moc a je to komplikovane.

Co jsou ty GDT a LDT, nejaka fyzicka mista na procesoru ?

Diky moc

Nahlásit jako SPAM
IP: 78.45.137.–
MilanL
~ Anonymní uživatel
1060 příspěvků
21. 3. 2022   #12
-
0
-

#11 Jan
Nejdříve by ses měl naučit základy Assembleru +  a organizaci paměti a až poté se pokoušet si hrát s nějakým low-level programováním.  

1) or al,1 - logický součet nastaví nejnižší bit,

ta skupina instrukcí znamená načtení 32bitového controlního registru CR0, následné nastavení bitu pro privilegovaný přístup a vrácení zpět do CR0

2) Align je zarovnání adresy umístění kodu/dat v paměti na daný počet Bajtů
  tzn aling 16 značí, následující kód nebo data budou uložena na adrese končící .....0000

Nahlásit jako SPAM
IP: 91.139.9.–
Jan
~ Anonymní uživatel
187 příspěvků
21. 3. 2022   #13
-
0
-

#12 MilanL

Jsou

or al,1

a

or eax,1

or rax,1

ekvivalentni ?

Myslim, ze tyto vsechny ano, ale ne s timto:

or ah,1

Je to tak ?

A jeste, co je Assembler +, mas odkaz na knihu v amazon.co.uk ?

Diky

Nahlásit jako SPAM
IP: 78.45.137.–
gna
~ Anonymní uživatel
1891 příspěvků
22. 3. 2022   #14
-
0
-

Jo, ty registry se "překrývají" a jen ah je "posunutý".

    6         5         4         3         2         1         
4321098765432109876543210987654321098765432109876543210987654321
^------------------------------rax-----------------------------^
                                ^--------------eax-------------^
                                                ^------ax------^
                                                ^--ah--^^--al--^

Ale, když na 64b systému zapíšeš do 32b registru, tak se horních 32b vynuluje. 

mov    rax,0xfffffffffffffff0  ; rax = 0xfffffffffffffff0
or     al,1                    ; rax = 0xfffffffffffffff1
or     ax,2                    ; rax = 0xfffffffffffffff3
or     eax,4                   ; rax =         0xfffffff7 !
or     rax,8                   ; rax =         0xffffffff
Nahlásit jako SPAM
IP: 213.211.51.–
22. 3. 2022   #15
-
0
-

Místo dotazů na každou instrukci zvlášť se podívej na strukturu registrů procesoru a na jeho instrukční sadu. Určitě se to dá vygůglit.

hu

Nahlásit jako SPAM
IP: 195.178.67.–
MilanL+1
Grafoman
23. 3. 2022   #16
-
0
-
Nahlásit jako SPAM
IP: 185.112.167.–
MilanL+1
Grafoman
23. 3. 2022   #17
-
0
-

   

mov    rax,0xffffffffffff0000  ; rax = 0xffffffffffff0000
or     al,1                    ; rax = 0xffffffffffff0001
or     ah,1                    ; rax = 0xffffffffffff0101
Nahlásit jako SPAM
IP: 185.112.167.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 23 hostů

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý