История изменений
Исправление quasimoto, (текущая версия) :
Linux/x86_64, обычный библиотечный вызов:
.S:
.string "..."
// puts("...");
movl $.S, %edi
jmp puts
ещё:
.S2:
.string "...\n"
// %edi = fd
// write(fd, "...\n", 4);
movl $.S2, %esi
movl $4, %edx
jmp write
ещё:
// syscall(SYS_write, fd, "...\n", 4);
movl %edi, %esi
movl $1, %edi
movl $.S2, %edx
movl $4, %ecx
jmp syscall
системный вызов инструкцией:
movl $1, %eax
movl $.S2, %esi
movl $4, %edx
syscall
ret
Дальше stdout / dev/tty* — open(«/dev/tty», O_WRONLY), http://www.linusakesson.net/programming/tty/case3.png.
Дальше работа сразу с MMIO/PMIO устройства, например, для VGA видеопамять в 0xB8000, порты 0x3D4, 0x3D5 и т.п.
http://wiki.osdev.org/VGA_Hardware
http://www.jamesmolloy.co.uk/tutorial_html/3.-The Screen.html
http://github.com/torvalds/linux/blob/164c09978cebebd8b5fc198e9243777dbaecdfa...
http://github.com/torvalds/linux/blob/164c09978cebebd8b5fc198e9243777dbaecdfa...
чем отличается переменная в 1 бит от переменной в 2 или 4 бита ?
http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-...
4.1 FUNDAMENTAL DATA TYPES
Исходная версия quasimoto, :
Linux/x86_64, обычный библиотечный вызов:
.S:
.string "..."
// puts("...");
movl $.S, %edi
jmp puts
ещё:
.S2:
.string "...\n"
// %edi = fd
// write(fd, "...\n", 4);
movl $.S2, %esi
movl $4, %edx
jmp write
ещё:
// syscall(SYS_write, fd, "...\n", 4);
movl %edi, %esi
movl $1, %edi
movl $.S2, %edx
movl $4, %ecx
jmp syscall
системный вызов инструкцией:
movl $1, %eax
movl $.S2, %esi
movl $4, %edx
syscall
ret
Дальше stdout / dev/tty* — open(«/dev/tty», O_WRONLY), http://www.linusakesson.net/programming/tty/case3.png.
Дальше работа сразу с MMIO/PMIO устройства, например, для VGA видеопамять в 0xB8000, порты 0x3D4, 0x3D5 и т.п.
http://wiki.osdev.org/VGA_Hardware
http://www.jamesmolloy.co.uk/tutorial_html/3.-The Screen.html
http://github.com/torvalds/linux/blob/164c09978cebebd8b5fc198e9243777dbaecdfa...
http://github.com/torvalds/linux/blob/164c09978cebebd8b5fc198e9243777dbaecdfa...
чем отличается переменная в 1 бит от переменной в 2 или 4 бита ?
http://download.intel.com/design/processor/manuals/253665.pdf
4.1 FUNDAMENTAL DATA TYPES