哈哈哈哈哈操欧洲电影,久草网在线,亚洲久久熟女熟妇视频,麻豆精品色,久久福利在线视频,日韩中文字幕的,淫乱毛视频一区,亚洲成人一二三,中文人妻日韩精品电影

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀(guān)看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用二進(jìn)制寫(xiě)程序

Wildesbeast ? 來(lái)源:今日頭條 ? 作者:光電科學(xué)史 ? 2020-01-20 11:50 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

二進(jìn)制來(lái)寫(xiě)程序這么反人類(lèi)的事情,的確是很裝的事情,但是它不但是一件很裝的事情,也是掌握底層知識(shí)的基礎(chǔ)能力之一。聽(tīng)我慢慢道來(lái)。

程序設(shè)計(jì)語(yǔ)言有高級(jí)語(yǔ)言和低級(jí)語(yǔ)言之分,尤其是現(xiàn)在各種編程語(yǔ)言的不斷發(fā)展,掌握高級(jí)程序設(shè)計(jì)語(yǔ)言的人越來(lái)越多。

但是是否可以使用二進(jìn)制來(lái)寫(xiě)程序呢?也許最初使用打孔帶來(lái)控制機(jī)器的人可以完成,那么現(xiàn)在是否仍然有人可以完成呢?答案是肯定的!

計(jì)算機(jī)可以直接運(yùn)行的指令是二進(jìn)制的機(jī)器碼,所有的代碼在運(yùn)行之前都會(huì)變成 CPU 可以識(shí)別的二進(jìn)制。對(duì)于編譯型的二進(jìn)制語(yǔ)言,其實(shí)都是可以直接使用二進(jìn)制來(lái)寫(xiě)的。

比如,Windows 下使用 C 語(yǔ)言編寫(xiě)的程序編譯連接后可以生成一個(gè) .exe 的可執(zhí)行程序,生成的這個(gè)可執(zhí)行程序就是一個(gè)二進(jìn)制程序。那么,這個(gè)程序如何用二進(jìn)制編寫(xiě)呢?

先來(lái)考慮幾個(gè)問(wèn)題!

首先,可執(zhí)行程序中并非只有代碼,而 CPU 要執(zhí)行的只有代碼。

其次,CPU 執(zhí)行的代碼是二進(jìn)制,但是在內(nèi)存中的數(shù)據(jù)也是二進(jìn)制數(shù)據(jù),那么如何知道哪部分是代碼,哪部分是數(shù)據(jù)呢?這是操作系統(tǒng)在加載程序文件進(jìn)入內(nèi)存時(shí),操作系統(tǒng)按照一定規(guī)則把不同二進(jìn)制按照不同的屬性裝入了不同的內(nèi)存分頁(yè)當(dāng)中,并對(duì)內(nèi)存設(shè)置相應(yīng)的屬性。

最后,操作系統(tǒng)如何知道程序文件中的二進(jìn)制哪部分是數(shù)據(jù),哪部分是代碼呢?這是在程序被編譯連接時(shí)不但把代碼和代碼所需的數(shù)據(jù)編譯到了程序中,還把管理代碼的數(shù)據(jù)也放入了程序中,而這部分管理數(shù)據(jù)決定了哪部分是數(shù)據(jù)哪部分是代碼。

因此,用二進(jìn)制寫(xiě)代碼就需要至少掌握兩方面,一方面是了解可執(zhí)行程序的管理數(shù)據(jù),另一方面就是了解 CPU 的機(jī)器碼。

在 Windows 下的可執(zhí)行程序是 PE 格式的,那么就要了解 PE 格式的數(shù)據(jù)結(jié)構(gòu),和 CPU 的機(jī)器碼;在安卓下的可執(zhí)行程序中,其格式是 DEX 格式,那么就要了解 DEX 格式的數(shù)據(jù)結(jié)構(gòu),以及安卓虛擬機(jī)的字節(jié)碼(這個(gè)字節(jié)碼不是 CPU 的機(jī)器碼,DEX 的字節(jié)碼最終被虛擬機(jī)解釋成機(jī)器碼,因此手寫(xiě) DEX 文件時(shí)了解 DEX 格式和其字節(jié)碼即可),同樣的,Java 編譯的 Class 文件也和安卓相同,因?yàn)樗彩腔谔摂M機(jī)執(zhí)行的文件。其中 PE 格式和 DEX 格式就是程序的管理數(shù)據(jù),用于告訴操作系統(tǒng)或虛擬機(jī),整個(gè)文件中代碼、數(shù)據(jù)以及其他資源在文件中的結(jié)構(gòu)。

因?yàn)槎M(jìn)制的閱讀性比較差,因此人們使用了八進(jìn)制和十六進(jìn)制。四位二進(jìn)制可以表示為一位十六進(jìn)制,由于系統(tǒng)是 32 位或 64 位,那么剛好使用 8 個(gè)十六進(jìn)制位表示 32 個(gè)二進(jìn)制位,或者 16 個(gè)十六進(jìn)制位表示 64 個(gè)二進(jìn)制位。因此,在內(nèi)存中查看數(shù)據(jù)時(shí),更多的是使用十六進(jìn)制,其實(shí)從本質(zhì)上十六進(jìn)制和二進(jìn)制是沒(méi)有區(qū)別的,只是表示的方式不同。因此,真正使用二進(jìn)制來(lái)寫(xiě)程序時(shí),是使用十六進(jìn)制來(lái)完成的。

那么,在使用十六進(jìn)制來(lái)編寫(xiě) Windows 下的可執(zhí)行程序時(shí),首先需要使用十六進(jìn)制編輯器構(gòu)造 PE 文件結(jié)構(gòu),PE 文件結(jié)構(gòu)主要告訴操作系統(tǒng),程序加載入內(nèi)存后,程序的映射起始地址是多少,程序的入口地址是多少,程序中的代碼和數(shù)據(jù)分別保存在哪里,以及它們的長(zhǎng)度是多少,映射到內(nèi)存中以后其地址是多少,該可執(zhí)行文件調(diào)用了哪些系統(tǒng)函數(shù),這些系統(tǒng)函數(shù)分別在哪些動(dòng)態(tài)鏈接庫(kù)中等信息。構(gòu)造完 PE 文件結(jié)構(gòu)以后,就可以使用機(jī)器碼來(lái)寫(xiě)程序了。只要把機(jī)器代碼寫(xiě)到 PE 文件結(jié)構(gòu)中標(biāo)識(shí)程序入口的位置處就行了。當(dāng)然了,機(jī)器碼寫(xiě)程序是比較困難的,但是作為學(xué)習(xí)底層基礎(chǔ)知識(shí)來(lái)說(shuō),寫(xiě)一個(gè)簡(jiǎn)單的程序還是可以的,比如寫(xiě)一個(gè)彈出對(duì)話(huà)框的“hello world”這樣的程序。用機(jī)器碼寫(xiě)這樣的程序,也無(wú)需了解太多的知識(shí),有一份 Opcode 的手冊(cè)就可以了。

這就是如何用十六進(jìn)制編輯器來(lái)完成一個(gè)可執(zhí)行程序的過(guò)程,關(guān)于 PE 文件格式,可以參考 MSDN 或網(wǎng)上的文章,對(duì)于學(xué)習(xí)機(jī)器碼相關(guān)的知識(shí)可以查看 Intel 的指令手冊(cè)。學(xué)習(xí)這些知識(shí)對(duì)于軟件破解、病毒分析、加密解密、內(nèi)核驅(qū)動(dòng)開(kāi)發(fā)等是相應(yīng)知識(shí)的基礎(chǔ)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀(guān)點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    11331

    瀏覽量

    225904
  • 二進(jìn)制
    +關(guān)注

    關(guān)注

    2

    文章

    809

    瀏覽量

    43201
  • WINDOWS
    +關(guān)注

    關(guān)注

    4

    文章

    3706

    瀏覽量

    94330
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    SN系列4位二進(jìn)制全加器:快速進(jìn)位的高效之選

    SN系列4位二進(jìn)制全加器:快速進(jìn)位的高效之選 引言 在電子電路設(shè)計(jì)領(lǐng)域,加法器是實(shí)現(xiàn)算術(shù)運(yùn)算的基礎(chǔ)組件,其性能直接影響到整個(gè)系統(tǒng)的運(yùn)算速度和效率。TI的SN系列4位二進(jìn)制全加器(SN54283
    的頭像 發(fā)表于 04-23 13:05 ?111次閱讀

    4位二進(jìn)制全加器:SN54/74系列的技術(shù)剖析與應(yīng)用指南

    4位二進(jìn)制全加器:SN54/74系列的技術(shù)剖析與應(yīng)用指南 在電子設(shè)計(jì)領(lǐng)域,加法器是實(shí)現(xiàn)數(shù)字運(yùn)算的基礎(chǔ)組件,而4位二進(jìn)制全加器在眾多數(shù)字電路設(shè)計(jì)中扮演著重要角色。今天,我們就來(lái)深入探討德州儀器(TI
    的頭像 發(fā)表于 04-23 13:05 ?119次閱讀

    CD4089B:高性能CMOS二進(jìn)制速率乘法器的設(shè)計(jì)與應(yīng)用

    CD4089B:高性能CMOS二進(jìn)制速率乘法器的設(shè)計(jì)與應(yīng)用 在電子設(shè)計(jì)領(lǐng)域,對(duì)于能夠?qū)崿F(xiàn)精確脈沖速率控制和多樣化運(yùn)算功能的器件需求始終存在。CD4089B作為一款高性能的CMOS二進(jìn)制速率乘法器
    的頭像 發(fā)表于 04-18 14:45 ?103次閱讀

    深入剖析 DM74LS283:4 位快速進(jìn)位二進(jìn)制加法器

    深入剖析 DM74LS283:4 位快速進(jìn)位二進(jìn)制加法器 在電子設(shè)計(jì)領(lǐng)域,加法器是實(shí)現(xiàn)數(shù)字運(yùn)算的基礎(chǔ)元件之一。今天我們要深入探討的是 Fairchild 公司的 DM74LS283 4 位快速進(jìn)位
    的頭像 發(fā)表于 04-10 16:40 ?247次閱讀

    74HC283 4位二進(jìn)制全加器:設(shè)計(jì)利器深度解析

    74HC283 4位二進(jìn)制全加器:設(shè)計(jì)利器深度解析 作為電子工程師,在數(shù)字電路設(shè)計(jì)中,加法器是我們經(jīng)常會(huì)用到的基礎(chǔ)元件。今天就來(lái)深入探討一下74HC283 4位二進(jìn)制全加器,它在諸多數(shù)字電路設(shè)計(jì)場(chǎng)景
    的頭像 發(fā)表于 04-08 16:15 ?200次閱讀

    二進(jìn)制 GPU 驅(qū)動(dòng)程序需要什么才能啟動(dòng)?

    二進(jìn)制 GPU 驅(qū)動(dòng)程序需要什么才能啟動(dòng)? 我想的是 USB、SD 卡、HDMI 和 ETH。 我猜音頻沒(méi)有 DAC,所以我們需要使用 USB 耳機(jī)加密狗?
    發(fā)表于 03-13 06:00

    探索CD54/74AC283與CD54/74ACT283:高效4位二進(jìn)制加法器的奧秘

    探索CD54/74AC283與CD54/74ACT283:高效4位二進(jìn)制加法器的奧秘 在電子設(shè)計(jì)領(lǐng)域,加法器是實(shí)現(xiàn)數(shù)字運(yùn)算的基礎(chǔ)元件之一。今天,我們將深入研究德州儀器(Texas
    的頭像 發(fā)表于 01-28 16:50 ?605次閱讀

    CDx4HC283和CDx4HCT283:高速CMOS邏輯4位二進(jìn)制全加器的詳細(xì)解析

    CDx4HC283和CDx4HCT283:高速CMOS邏輯4位二進(jìn)制全加器的詳細(xì)解析 在電子設(shè)計(jì)領(lǐng)域,加法器是數(shù)字電路中最基本的運(yùn)算單元之一,用于實(shí)現(xiàn)二進(jìn)制數(shù)的加法運(yùn)算。今天要給大家介紹
    的頭像 發(fā)表于 01-19 14:50 ?491次閱讀

    解析CD54/74AC283與CD54/74ACT283:4位二進(jìn)制加法器的卓越之選

    解析CD54/74AC283與CD54/74ACT283:4位二進(jìn)制加法器的卓越之選 在電子設(shè)計(jì)領(lǐng)域,加法器是實(shí)現(xiàn)數(shù)字運(yùn)算的基礎(chǔ)組件。今天我們要深入探討的是德州儀器(Texas
    的頭像 發(fā)表于 01-08 16:55 ?739次閱讀

    CD54/74AC283與CD54/74ACT283:高性能4位二進(jìn)制加法器的全面解析

    CD54/74AC283與CD54/74ACT283:高性能4位二進(jìn)制加法器的全面解析 在電子設(shè)計(jì)領(lǐng)域,加法器是一種基礎(chǔ)且關(guān)鍵的數(shù)字電路,廣泛應(yīng)用于各種計(jì)算和數(shù)據(jù)處理系統(tǒng)中。今天,我們要深入探討
    的頭像 發(fā)表于 12-31 17:10 ?1536次閱讀

    SN54F283與SN74F283:4位二進(jìn)制全加器的技術(shù)剖析

    SN54F283與SN74F283:4位二進(jìn)制全加器的技術(shù)剖析 在數(shù)字電路設(shè)計(jì)中,加法器是最基礎(chǔ)且關(guān)鍵的組件之一。今天我們要深入探討的是德州儀器(TI)的SN54F283和SN74F283這兩款4位
    的頭像 發(fā)表于 12-29 16:20 ?1109次閱讀

    德州儀器4位二進(jìn)制全加器:SN54/74283系列深度解析

    德州儀器4位二進(jìn)制全加器:SN54/74283系列深度解析 在數(shù)字電路設(shè)計(jì)領(lǐng)域,加法器是構(gòu)建復(fù)雜算術(shù)邏輯單元的基礎(chǔ)組件。德州儀器(TI)的SN54/74283系列4位二進(jìn)制全加器憑借其快速進(jìn)位
    的頭像 發(fā)表于 12-23 15:45 ?1035次閱讀

    二進(jìn)制查找(Binary Search)介紹

    二進(jìn)制查找(Binary Search)用于在已排序的數(shù)組中執(zhí)行二進(jìn)制查找的函數(shù)。 int binary_search(int arr[], int size, int target
    發(fā)表于 12-12 06:54

    如何將圖像文件轉(zhuǎn)換為二進(jìn)制文件?

    如何將圖像文件轉(zhuǎn)換為二進(jìn)制文件
    發(fā)表于 09-05 08:28

    二進(jìn)制數(shù)據(jù)處理方法分享

    時(shí),我們?nèi)绾稳ソ馕鰯?shù)據(jù)并且應(yīng)用它們。本次的技術(shù)分享文章,我們就從如何傳輸數(shù)據(jù)和解析二進(jìn)制數(shù)據(jù)來(lái)一步一步剝絲抽繭,搞清楚他的運(yùn)作原理和二進(jìn)制數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)。
    的頭像 發(fā)表于 07-30 15:41 ?2598次閱讀
    <b class='flag-5'>二進(jìn)制</b>數(shù)據(jù)處理方法分享
    吴旗县| 依兰县| 石阡县| 民和| 乳源| 华宁县| 玉林市| 西峡县| 抚远县| 库尔勒市| 会宁县| 拜城县| 郴州市| 太和县| 苏尼特左旗| 桐乡市| 峨边| 洪江市| 清水河县| 汉阴县| 南召县| 乌苏市| 禹州市| 宁河县| 远安县| 长白| 莱西市| 敦煌市| 孙吴县| 彭山县| 汾西县| 衡阳县| 夏河县| 安庆市| 桐梓县| 家居| 弥渡县| 棋牌| 江源县| 南阳市| 南雄市|