GNU彙編生成二進位制bin檔案

2021-06-08 16:35:43 字數 597 閱讀 9623

眾所周知,早期的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等軟體開啟。二進位制檔案裡面儲存的都是資料,只有按照某個預...