Společnost Pebble představila (YouTube) chytré hodinky Pebble Round 2. S kulatým e-paper displejem, s open source PebbleOS a vydrží baterie přibližně dva týdny. Předobjednat je lze za 199 dolarů s plánovaným dodáním v květnu.
Na novoroční inauguraci starosty New Yorku Zohrana Mamdaniho bylo zakázáno si s sebou přinést Raspberry Pi anebo Flipper Zero. Raspberry Pi i Flipper Zero jsou explicitně uvedeny v seznamu zakázaných věcí jak na na veřejné pozvánce, tak i na oficiálních stránkách města.
OpenTTD (Wikipedie), tj. open source klon počítačové hry Transport Tycoon Deluxe, byl vydán v nové stabilní verzi 15.0. Přehled novinek v seznamu změn a také na YouTube. OpenTTD lze instalovat také ze Steamu.
Správce oken IceWM byl vydán ve verzi 4.0.0, která např. vylepšuje navigaci v přepínání velkého množství otevřených oken.
Od 1. ledna 2026 jsou všechny publikace ACM (Association for Computing Machinery) a související materiály přístupné v její digitální knihovně. V rámci této změny je nyní digitální knihovna ACM nabízena ve dvou verzích: v základní verzi zdarma, která poskytuje otevřený přístup ke všem publikovaným výzkumům ACM, a v prémiové zpoplatněné verzi, která nabízí další služby a nástroje 'určené pro hlubší analýzu, objevování a organizační využití'.
K 1. lednu 2026 končí 70leté omezení majetkových autorských práv děl autorů zesnulých v roce 1955, viz 2026 in public domain. V americkém prostředí vstupují do public domain díla z roku 1930, viz Public Domain Day.
Všem vše nejlepší do nového roku 2026.
Crown je multiplatformní open source herní engine. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT a GPLv3+. Byla vydána nová verze 0.60. Vyzkoušet lze online demo.
Daniel Stenberg na svém blogu informuje, že po strncpy() byla ze zdrojových kódů curlu odstraněna také všechna volání funkce strcpy(). Funkci strcpy() nahradili vlastní funkcí curlx_strcopy().
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:
Zapisovat můžeš pomocí funkce outb():
outb(0b00000001, addr);
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í =.
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.
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.
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ý.
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).
#include <stdlib.h>
void int5() {
asm volatile("int $5" : : : "memory");
}
int main(int argc, char **argv) {
int5();
return EXIT_SUCCESS;
}
Tiskni
Sdílej: