原文 Assembler / なぜx86ではMBRが"0x7C00"にロードされるのか?(完全版)
感謝 descent 大大分享本文,隨便看隨便譯。本文不是逐句譯,同時也不是這方面的專家 (不管是語言或技術),用語不一或缺漏錯誤在所難免,歡迎自行 fork 修正指教
誰適合看本文?
對 x86 架構與組合語言有基礎認識,以及從 MBR 到載入 OS 這一段過程有興趣的人 (還有談到中斷向量或 INT xxx 時不會一臉茫然的人)
| diff --git a/configure b/configure | |
| index d6dc075..4f3e715 100755 | |
| --- a/configure | |
| +++ b/configure | |
| @@ -233,7 +233,8 @@ if [ $USE_ANTHY = 'Y' ] || [ $USE_CHEWING = 'Y' ]; then | |
| BUILD_MODULE='Y' | |
| fi | |
| -OPTFLAGS="-O" | |
| +OPTFLAGS=${CFLAGS:--O} |
| diff --git a/data/Makefile b/data/Makefile | |
| index e6d5c79..adf5f58 100644 | |
| --- a/data/Makefile | |
| +++ b/data/Makefile | |
| @@ -1,7 +1,7 @@ | |
| include ../config.mak | |
| SRC_DIR = ../src | |
| -IM_CLIENT_DIR = ../src/im-client |
| diff --git a/extprims.c b/extprims.c | |
| index 2b7c438..1a1c532 100644 | |
| --- a/extprims.c | |
| +++ b/extprims.c | |
| @@ -326,7 +326,7 @@ NEWPRIM(acceptconn) { | |
| /* ( listen_sock -- connection_sock ) */ | |
| struct sockaddr_in their_addr; | |
| - int tp = sizeof(struct sockaddr_in); | |
| + socklen_t tp = sizeof(struct sockaddr_in); |
| [Software\\Wine\\X11 Driver] 1240428288 | |
| "ClientSideAntiAliasWithCore"="N" | |
| "ClientSideAntiAliasWithRender"="N" | |
| "ClientSideWithCore"="Y" | |
| "ClientSideWithRender"="Y" | |
| "DXGrab"="Y" | |
| "UseXIM"="Y" |
| ;; | |
| ;; ( f -- ) _if <then_label> | |
| ;; do something | |
| ;; then_label: | |
| ;; | |
| %macro _if 1 | |
| cell _0branch | |
| dd %1-%%_offset | |
| %%_offset: | |
| %endmacro |
| #!/bin/sh | |
| find $1 | sed -e 's/^.\///;s/\/$//;s/[^\/]\+\/\([^\/]\+\)$/ + \1/;s/[^\/]\+\// | /g' |
| void vm_exec_xt(vm_t *vm, xt_t *xt) | |
| { | |
| ... | |
| CODE(PLUS): | |
| /* ( n1|u1 n2|u2 -- n3|u3 ) */ | |
| ds->cells[ds->pos-2] += ds->cells[--ds->pos]; | |
| ENDCODE; |
| from dsl.scheme import * | |
| (_define . foo | |
| ((1, 2, 3))) | |
| (_define . bar | |
| (lambda x: x + 4)) | |
| (_display (1, 3)) |
| %macro putchar 1 | |
| mov ah, 0xe | |
| int 0x10 | |
| %endmacro | |
| %macro getchar 1 | |
| xor ax, ax | |
| int 0x16 | |
| mov ah, 0 | |
| %endmacro |
原文 Assembler / なぜx86ではMBRが"0x7C00"にロードされるのか?(完全版)
感謝 descent 大大分享本文,隨便看隨便譯。本文不是逐句譯,同時也不是這方面的專家 (不管是語言或技術),用語不一或缺漏錯誤在所難免,歡迎自行 fork 修正指教
誰適合看本文?
對 x86 架構與組合語言有基礎認識,以及從 MBR 到載入 OS 這一段過程有興趣的人 (還有談到中斷向量或 INT xxx 時不會一臉茫然的人)