眾所周知,早期的gnu彙編只能支援32**的編寫,不支援16為的**。所以用gnu彙編寫boot檔案是很困難的事情。
後來gnu經過改進,終於支援16位的**編寫了,但是gnu彙編寫的**編譯出的純二進位制檔案還是預設為32位的。
例如一下**:
.section .text
.globl _start
_start:
movl $0x10, %eax
儲存為1.s
as -o 1.o 1.s
ld --oformat binary -o 1.bin 1.o
而後反彙編1.bin:ndisasm -b 16 1.bin
得出一下結果:
b81000 mov ax, 0x10
0000 add [bx+si], al
由此可見,一句彙編指令被拆分成兩條了,原因是gnu預設支援的是32位**。
我們編寫的是16位**,而gnu卻以32為**的模式去編譯這個檔案,所以會有上面的奇怪現象。
如果我們要編寫16位**,則必須在**前面加上.code16
切換回32位**則必須在**前面加上.code32
python 整數轉為二進位制bin
乙個整數轉換為乙個二進位制字串可以用python bin 方法。其結果是乙個有效的python表示式。比如我們要得到整數1的二進位製碼可以 a 1 bin a 輸出的結果 ob1。說明1的二進位製碼是1 a 2 bin a 輸出的結果 ob10 2的二進位製碼是10 如果裡面的引數不是乙個pytho...
python 整數轉為二進位制bin
乙個整數轉換為乙個二進位制字串可以用python bin 方法。其結果是乙個有效的python表示式。比如我們要得到整數1的二進位製碼可以 a 1 bin a 輸出的結果 ob1。說明1的二進位製碼是1 a 2 bin a 輸出的結果 ob10 2的二進位製碼是10 如果裡面的引數不是乙個pytho...
python處理二進位制檔案( bin
最近遇到了python處理.bin檔案的一些問題,簡單地羅列一下。擴充套件名為.bin的檔案就是乙個二進位制檔案 binary 不同於文字檔案,二進位制檔案用記事本 notepad 等開啟都是亂碼。像是這樣 但是.bin檔案可以用winhex等軟體開啟。二進位制檔案裡面儲存的都是資料,只有按照某個預...