abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
dnes 09:00 | Nová verze

Byla vydána nová verze 1.2.0 grafického správce diskových oddílů GParted (GNOME Partition Editor) a také verze 1.2.0 živé distribuce GParted Live, která obsahuje tohoto správce a další nástroje pro zálohování či obnovu dat. Novinkou je především podpora souborového systému exFAT díky exfatprogs.

Ladislav Hagara | Komentářů: 0
dnes 08:00 | Zajímavý software

Google v příspěvku na svém blogu věnovaném open source oznámil, že uvolnil zdrojové kódy aplikace Tilt Brush (Wikipedie) pro 3D malování ve virtuální realitě. K dispozici jsou na GitHubu pod open source licencí Apache 2.0.

Ladislav Hagara | Komentářů: 0
dnes 07:00 | Zajímavý software

Svobodný šachový server Lila, pohánějící mj. populární Lichess.org, nově implementuje dlouho očekávaný Puzzle Storm, kde má hráč za úkol v omezeném čase vyřešit co nejvíce taktických úloh o postupně narůstající obtížnosti. Jedná se o konkurenci vůči Puzzle Rushi od komerčního Chess.com, kde je tato funkce zpoplatněna.

… více »
Bherzet | Komentářů: 1
včera 13:33 | Nová verze

Laboratoře CZ.NIC vydaly novou verzi 4.16.0 aplikace Datovka, tj. svobodné multiplatformní desktopové aplikace pro přístup k datovým schránkám a k trvalému uchovávání datových zpráv v lokální databázi. Nově je pro překlad aplikace potřeba použít knihovnu libdatovka. Ta byla vydána ve verzi 0.1.0.

Ladislav Hagara | Komentářů: 0
včera 09:00 | Zajímavý článek

Brian Exelbierd, zástupce Red Hatu v představenstvu distribuce CentOS, poskytl rozhovor webu The Register. Ukončení vydávání CentOS jako sestavení RHEL vysvětluje tak, že Red Hat ho odmítl nadále sponzorovat. Dále hovoří o roli a omezeních nového bezplatného vydání RHEL.

Fluttershy, yay! | Komentářů: 13
včera 06:00 | Bezpečnostní upozornění

Balíček s utilitou sudo byl vydán ve verzi 1.9.5p2. Řešena je bezpečnostní chyba CVE-2021-3156. Lokální uživatel může získat práva roota i když není uveden v souboru sudoers. Podrobnosti i s videoukázkou v příspěvku na blogu společnosti Qualys. Chyba byla do kódu sudo zanesena na konci července 2011 (commit 8255ed69). Týká se tedy verzí 1.8.2 až 1.8.31p2 a 1.9.0 až 1.9.5p1.

Ladislav Hagara | Komentářů: 18
26.1. 19:00 | Zajímavý článek

Společnost Backblaze zveřejnila statistiky spolehlivosti pevných disků používaných ve svých datových centrech za rok 2020. Ke konci roku vlastnila 165 530 pevných disků. V průběhu roku jich přibylo 39 792. Průměrná AFR (Annualized Failure Rate), tj. pravděpodobnost, že disk během roku selže, klesla na 0,93 %. V roce 2019 to bylo 1,89 %. V roce 2018 to bylo 1,25 %. V roce 2017 to bylo 1,77 %. V roce 2016 1,95 %.

Ladislav Hagara | Komentářů: 6
26.1. 18:11 | Nová verze

Dle plánu byl vydán Mozilla Firefox 85.0. Přehled novinek v poznámkách k vydání, poznámkách k vydání pro firmy a na stránce věnované vývojářům. Přibyla ochrana před supercookies. Odstraněna byla podpora Flashe. Řešeny jsou také bezpečnostní chyby. Nejnovější Firefox je již k dispozici také na Flathubu.

Ladislav Hagara | Komentářů: 6
26.1. 12:44 | Nová verze

Byla vydána nová verze 4.15 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Přehled změn v příslušném seznamu. Tor Browser byl aktualizován na verzi 10.0.9. Thunderbird byl aktualizován na verzi 78.6.0. Linux byl aktualizován na verzi 5.9.15.

Ladislav Hagara | Komentářů: 0
26.1. 12:33 | Komunita

Projekt Mozilly MDN Web Docs dokumentující webové standardy včetně jejich podpory v jednotlivých prohlížečích byl loňským propouštěním citelně zasažen. Poté, co se obsah MDN přesunul na GitHub, čímž se z určitého pohledu více otevřel pro přispívání z řad webových vývojářů, vznikla nová organizace Open Web Docs. Na Open Collective už má přes 60 finančních přispěvatelů a největší mezi nimi jsou Google, Microsoft a Coil. Dále se do projektu zapojuje samozřejmě Mozilla, Samsung a W3C [Mozilla.cz].

Ladislav Hagara | Komentářů: 0
Jestliže používáte distribuci CentOS, kterou náhradu plánujete vzhledem k oznámenému ukončení vydávání?
 (29%)
 (4%)
 (1%)
 (21%)
 (0%)
 (3%)
 (42%)
Celkem 213 hlasů
 Komentářů: 4, poslední 25.1. 03:13
Rozcestník

Dotaz: Zapisovanie do pamate

12.8.2019 19:24 mates
Zapisovanie do pamate
Přečteno: 458×
Ahojte potreboval by som v C / C++ daco zapisat na adresu v pamati

V Basicu na to boli funckie

PEEK(ADRESA%) - funkcia precitala hodnotu zo zadanej adresy
POKE ADRESA%, hodnota% - procedura zapisala hodnotu na zadanu adresu ak sme chceli zapisat znak bolo ho potrebne previest na cislo

A k tymto funkciam bola este prikaz:
DEF SEG, ktorym sa prepinali segmenty.

Ako sa tieto funkcie a prikazy volaju v C++ resp C? Alebo vedeli by ste mi poradit ako tento priklad z basicu prepisat do C++?
DIM a%(2)
DEF SEG = VARSEG(a%(0))
FOR i% = 0 TO 2
  READ d%
  POKE VARPTR(a%(0)) + i%, d%
NEXT i%
DATA 205, 5, 203

CALL ABSOLUTE(VARPTR(a%(0)))
DEF SEG

Řešení dotazu:


Odpovědi

12.8.2019 21:33 debian+
Rozbalit Rozbalit vše Re: Zapisovanie do pamate
9 Smerniky

V C neprepinaju pametove segmenty.
xkucf03 avatar 12.8.2019 21:40 xkucf03 | skóre: 49 | blog: xkucf03
Rozbalit Rozbalit vše Re: Zapisovanie do pamate

Zapisovat můžeš pomocí funkce outb():

outb(0b00000001, addr);

(celý příklad)

Nebo si ukazatel mířící na dané místo v paměti přetypovat na datový typ, který chceš zapsat a pak normálně přiřadit pomocí =.

Mám rád, když se lidé přou, znamená to, že vědí, co dělají, a že mají směr. Frantovo.cz, SQL-DK, Relational pipes
13.8.2019 10:26 R
Rozbalit Rozbalit vše Re: Zapisovanie do pamate
out zapisuje na I/O port, nie do pamati.
13.8.2019 11:45 Rezervní Polská Kotace
Rozbalit Rozbalit vše Re: Zapisovanie do pamate
Je sice pravda, že na x86 jsou to oddělené adresní prostory, ale v první řadě by to chtělo vědět, co je cílem tazatele. Dost možná totiž přímo do paměti zapisovat nepotřebuje...
13.8.2019 18:56 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: Zapisovanie do pamate

Cílem je kopírovat příklady z Dokumentace QBasicu poplatné reálnému režimu x86.

Ne že by ho jazyk C omezoval v zapisování do paměti. Ale skok na konkrétní adresu už problém bude. Předně C bude očekávat platformě závislou volací konvenci, takže autor bude muset ty tři bajty kódu obalit nějakou hlavičkou. A pak bude muset najít operační systém, který mu dovolí spustit kód z adresy, kam má právo zapisovat. Řada moderních systémů takovému mapování paměti brání. Nehledě na to, že volání BIOSu mu z uživatelského ringu opět fungovat nebude. Ale je docela možné, že tazatel stále používá DOS a jen vyměnil QBasic za C.

13.8.2019 20:07 debian+
Rozbalit Rozbalit vše Re: Zapisovanie do pamate
Ako skakanie v Cecku funguje. Pouziva sa goto. Ale nikto ti negarantuje, ze sa neposkodi zasobnik. C je cecko.
Předně C bude očekávat platformě závislou volací konvenci, takže autor bude muset ty tři bajty kódu obalit nějakou hlavičkou. A pak bude muset najít operační systém, který mu dovolí spustit kód z adresy, kam má právo zapisovat. Řada moderních systémů takovému mapování paměti brání. Nehledě na to, že volání BIOSu mu z uživatelského ringu opět fungovat nebude. Ale je docela možné, že tazatel stále používá DOS a jen vyměnil QBasic za C.
Ak on mysli na skok na nejaku funkciu z adresa, da sa to. Zavolat funkciu cez smernik na funkciu. Ale nechod tak LOW ak nemusis a nechod az tak LOW ako pascal resp. assambler. Ano, ma pravdu, ze existuje nejake standart, ako sa predavaju data medzi OS a programom. A je to v C osetrene aj platformove veci - napr. big/little endian. Pokial sa bavime o OS s Linuxom. Ak to zariadenie nema OS. Tak volas funkcie alebo funkcie cez smernik na funkcie, pouzitie goto alebo inline assambler v C.
13.8.2019 20:13 debian+
Rozbalit Rozbalit vše Re: Zapisovanie do pamate
Hm, este tu mame setjmp() a longjmp(), pre "goto" nie len v prave lokalnom ("static") .c subore.
Jendа avatar 14.8.2019 01:16 Jendа | skóre: 76 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Zapisovanie do pamate
Ale skok na konkrétní adresu už problém bude. Předně C bude očekávat platformě závislou volací konvenci, takže autor bude muset ty tři bajty kódu obalit nějakou hlavičkou.
A pokud se bude chtít vrátit, tak bude muset vědět, co ten kód udělal, a jak po něm uklidit. Ale to mu neporadíme dokud nebudeme vědět o co se snaží.

(pokud to má správnou konvenci tak teoreticky chce udělat to co dělá dlopen/dlsym, ne?)
A pak bude muset najít operační systém, který mu dovolí spustit kód z adresy, kam má právo zapisovat. Řada moderních systémů takovému mapování paměti brání.
AFAIK to jde třeba na Linuxu dost snadno vypnout (viz mprotect) a i takový non-executable stack se teprve nedávno řešil že by měl být všude defaultně zapnutý.
13.8.2019 09:35 rastos | skóre: 62 | blog: rastos
Rozbalit Rozbalit vše Re: Zapisovanie do pamate
Toto bude prča.

/me clicks "Začni sledovat"
13.8.2019 11:40 Rezervní Polská Kotace
Rozbalit Rozbalit vše Re: Zapisovanie do pamate
Co je špatného na tom, že odložil svůj Commodore 64 na půdu a pořídil si modernější systém?
13.8.2019 12:13 rastos | skóre: 62 | blog: rastos
Rozbalit Rozbalit vše Re: Zapisovanie do pamate
Špatné absolutne nic. Ale občas je zábavné sledovať ľudí zažívajúcich kultúrny šok ;-)
Řešení 1× (xkucf03)
Jendа avatar 13.8.2019 17:06 Jendа | skóre: 76 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Zapisovanie do pamate
Příklad z Arduína, zapíše 0x7777 na adresu 0x0300
volatile uint16_t *const bootKeyPtr = (volatile uint16_t *)0x0300;
*bootKeyPtr = 0x7777;
Samozřejmě pokud je to na nějakém operačním systému a ne přímo bare-metal, tak jde o virtuální paměť, kterou tvému programu poskytl operační systém. Pokud chceš přímo zapisovat do fyzické paměti (například máš v paměti namapované nějaké zařízení, které se pomocí zápisů ovládá), musíš si (na Linuxu) zkompilovat podporu pro zařízení /dev/mem. Následně toto zařízení otevřeš, pomocí lseek dojedeš na danou pozici a pomocí read přečteš (případně je možné namapovat kousek tohoto souboru pomocí mmap do tvého virtuálního prostoru a zápisy jsou pak překládány jak by člověk čekal).
15.8.2019 17:31 Jindřich Makovička | skóre: 17
Rozbalit Rozbalit vše Re: Zapisovanie do pamate
Pokud opravdu chcete ekvivalent uvedeného kódu, tak tady. (v DOSu by to mohlo tu obrazovku na tiskárně vyjet, v Linuxu to pochopitelně spadne na segfault)
#include <stdlib.h>

void int5() {
    asm volatile("int $5" : : : "memory");
}


int main(int argc, char **argv) {
    int5();

    return EXIT_SUCCESS;
}
15.8.2019 20:36 debian+
Rozbalit Rozbalit vše Re: Zapisovanie do pamate
gcc pouzi AT/X syntax. Zaujimavostou je, ze mozte v tom asm pouzivat premenne z C prostredia a prekladat ich nahradi, za realne hodnoty pri preklade.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267   www.czech-server.cz
© 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.