Bitwig Studio (Wikipedie) bylo vydáno ve verzi 6. Jedná se o proprietární multiplatformní (macOS, Windows, Linux) digitální pracovní stanici pro práci s audiem (DAW).
Společnost Igalia představila novou linuxovou distribuci (framework) s názvem Moonforge. Jedná se o distribuci určenou pro vestavěné systémy. Vychází z projektů Yocto a OpenEmbedded.
Google Chrome 146 byl prohlášen za stabilní. Nejnovější stabilní verze 146.0.7680.71 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 29 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.
D7VK byl vydán ve verzi 1.5. Jedná se o fork DXVK implementující překlad volání Direct3D 3 (novinka), 5, 6 a 7 na Vulkan. DXVK zvládá Direct3D 8, 9, 10 a 11.
Bylo vydáno Eclipse IDE 2026-03 aneb Eclipse 4.39. Představení novinek tohoto integrovaného vývojového prostředí také na YouTube.
Ze systému Slavia pojišťovny uniklo přibližně 150 gigabajtů citlivých dat. Jedná se například o pojistné dokumenty, lékařské záznamy nebo přímou komunikaci s klienty. Za únik může chyba dodavatelské společnosti.
Sněmovna propustila do dalšího kola projednávání vládní návrh zákona o digitální ekonomice, který má přinést bezpečnější on-line prostředí. Reaguje na evropské nařízení DSA o digitálních službách a upravuje třeba pravidla pro on-line tržiště nebo sociální sítě a má i víc chránit děti.
Meta převezme sociální síť pro umělou inteligenci (AI) Moltbook. Tvůrci Moltbooku – Matt Schlicht a Ben Parr – se díky dohodě stanou součástí Meta Superintelligence Labs (MSL). Meta MSL založila s cílem sjednotit své aktivity na poli AI a vyvinout takovou umělou inteligenci, která překoná lidské schopnosti v mnoha oblastech. Fungovat by měla ne jako centralizovaný nástroj, ale jako osobní asistent pro každého uživatele.
Byla vydána betaverze Fedora Linuxu 44 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 14. dubna.
Open source router Turris Omnia NG Wired je v prodeji. Jedná se o Turris Omnia NG bez Wi-Fi. Je připraven pro zamontování do racku.
)
tinyhello.c:
#include <stdint.h>
int sys_write(int fd, char const* text, uint32_t length) {
uint64_t retval;
asm volatile (
/* SYSCALL instruction invokes the kernel */
"syscall"
/* return value will be read from rax */
: "=rax"(retval)
/* where the input arguments should be placed */
: "a"((uint64_t)1), /* eax = syscall number */
"D"(fd), /* argument 1 (fd) goes to rdi/edi */
"S"(text), /* argument 2 (text) goes to rsi/esi */
"d"(length) /* argument 3 (length) goes to rdx/edx */
/* registers that may contain garbage after the call - for syscalls, they are rcx, r11 */
: "rcx", "r11"
);
return retval;
}
void sys_exit() __attribute__((noreturn));
void sys_exit() {
asm volatile (
"syscall"
:
: "a"((uint64_t)60), "D"((uint32_t)0)
: "rcx", "r11"
);
for(;;); /* emergency stop */
}
void _start() {
sys_write(1, "Hello world!\n", 13);
sys_exit();
}
Lze přeložit jednoduše s gcc tinyhello.c -o tinyhello --static -nostdlib s tím, že výsledný ELF obsahuje hodně balastních sekcí a má cca 9 KiB nestripnutý. Pro zahození sekcí, které tady nejsou potřeba, linker script:
tinyhello.lnk:
OUTPUT_FORMAT(elf64-x86-64)
ENTRY(_start)
SECTIONS
{
. = SEGMENT_START("text-segment", 0x400000) + SIZEOF_HEADERS;
.text : {
*(.text);
*(.rodata*);
}
/DISCARD/ : {
*(*);
}
}
Překládá se potom s gcc tinyhello.c -o tinyhello --static -nostdlib -Ttinyhello.lnk a výsledek má 880 bajtů nestripnutý.
Tiskni
Sdílej:
Tato varianta je pro x86-64, protože inline assemblerDá se to napsat i tak, že to podporuje více platforem zaráz. Před nějakou dobou jsem si s tím hrál a zde je výsledek, který podporuje x86-64 a ARM (nebo aspoň 'běžné' ARMy, nějaký specielní možná fungovat nebude):
#include <stdint.h>
const uint64_t _start[] __attribute__((section(".text"))) = {
0xe3a00001909032eb, 0xe3a0200ce28f1014,
0xef000000e3a07004, 0xe3a07001e3a00000,
0x6c6c6548ef000000, 0x0a214d5241202c6f,
0x18ec834800000000, 0x4800000045058b48,
0xa20fc03148240489, 0x0c24548908245c89,
0x142444c710244c89, 0x01c0c74800000a21,
0x0001c7c748000000, 0x480124748d480000,
0x050f00000015c2c7, 0x480000003cc0c748,
0x6c654820050fff31, 0x00000000202c6f6c,
};
Kompiluje se pomocí gcc -static -nostdlib
Přeji příjemnou zábavu :)
Tato varianta je pro x86-64, protože inline assemblerU prvni verze jsem si rikal, jestli by to nebylo citelnejsi psat rovnou v assembleru... Ale napad vzit binarku a prelozit ji s gcc na binarku je dost originelni, to uznavam. ;-]
Ale napad vzit binarku a prelozit ji s gcc na binarku je dost originelni, to uznavam. ;-]Ten není můj, ten je odsud :) Můj je jen ten s tou platformní vidličkou...
supr stromeček žlutej :P :D ;D ;D
- ale DOS byl taky celkově jednodušší a měl méně schopností.
Koncepční otázka ovšem je, zda po něm chtít, aby se spustil
.text
.code64
.globl _start
_start:
movb $1, %al /* syscall num */
movw $1, %di /* file descriptor */
movq $hello_str, %rsi /* text */
movq $(hello_str_end - hello_str), %rdx /* length */
syscall
movb $60, %al
xorw %di, %di
syscall
.data
hello_str:
.ascii "Hello, World!\n"
hello_str_end:
as -64 hello.S -o hello.o && ld --omagic -s -x -static -T script.ld hello.o(tj. x86_64, ne debugovací symboly, strip a statické) Linker script stejný, jenom místo
.rodata tam je .data.
| Tvoj kód/preklad | 864 B |
| + moje úpravy/preklad | 736 B |
| Ušetrene: | 131 B (14,8 %) |
tttttssss echo má nějakejch 40kb :O ;D
tttttssss echo má nějakejch 40kb :O ;DU mě taky... Ale ten se pravděpodobně nepoužije, typicky se použije
echo zabudovaný přímo v shellu...
kde jakoby vubec končí c a začíná asm :O :O
V čem je problém? Kdybys chtěl programovat tímhle způsobem, tak bys vyzobal/reimplementoval různé části standardní knihovny a řešil by sis přenositelnost sám. Teoreticky kdyby standardní knihovna byla moc velký moloch a potřeboval bys z ní jen nějakých 10 %, tak by to třeba smysl dávalo, ale typicky z ní budeš potřebovat větší část a navíc je tu ta přenositelnost… řešit tyhle věci v kódu aplikace mi přijde nesmyslné. Jako ukázka je to fajn, ale… jinak už by dávalo větší smysl to řešit na úrovni jazyka (tzn. úplně obejít céčko a místo něj mít něco jiného, co se napojuje na systémová volání).