LINUX.ORG.RU

История изменений

Исправление 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