chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

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

如何將一個(gè)用戶源程序變?yōu)橐粋€(gè)可在內(nèi)存中執(zhí)行的程序

Q4MP_gh_c472c21 ? 來(lái)源:CSDN博客 ? 作者:hguisu ? 2021-11-11 11:19 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、地址概念和程序如何運(yùn)行在多道程序環(huán)境下,要使程序運(yùn)行,必須先為之創(chuàng)建進(jìn)程。而創(chuàng)建進(jìn)程的第一件事,便是將程序和數(shù)據(jù)裝入內(nèi)存。如何將一個(gè)用戶源程序變?yōu)橐粋€(gè)可在內(nèi)存中執(zhí)行的程序,通常都要經(jīng)過(guò)以下幾個(gè)步驟:

首先是要編譯:

由編譯程序(Compiler)將用戶源代碼編譯成cpu可執(zhí)行的目標(biāo)代碼,產(chǎn)生了若干個(gè)目標(biāo)模塊(Object Module)(即若干程序段)。形成的目標(biāo)代碼,每個(gè)目標(biāo)代碼都是以0為基址順序進(jìn)行編址,原來(lái)用符號(hào)名訪問(wèn)的單元用具體的數(shù)據(jù)——單元號(hào)取代。這樣生成的目標(biāo)程序占據(jù)一定的地址空間,稱為作業(yè)的邏輯地址空間,簡(jiǎn)稱邏輯空間。

在邏輯空間中每條指令的地址和指令中要訪問(wèn)的操作數(shù)地址統(tǒng)稱為邏輯地址 。很簡(jiǎn)單,邏輯地址就是你源程序里使用的地址,或者源代碼經(jīng)過(guò)編譯以后編譯器將一些標(biāo)號(hào),變量轉(zhuǎn)換成的地址。

其次是鏈接

由鏈接程序(Linker)將編譯后形成的一組目標(biāo)模塊(程序段),以及它們所需要的庫(kù)函數(shù)鏈接在一起,形成一個(gè)完整的裝入模塊(Load Module);

最后是裝入(地址重定位)

由裝入程序(Loader)將裝入模塊裝入物理內(nèi)存。物理內(nèi)存是真實(shí)存在的插在主板內(nèi)存槽上的內(nèi)存條的容量的大小。

物理內(nèi)存內(nèi)存是由若干個(gè)存儲(chǔ)單元組成的,每個(gè)存儲(chǔ)單元有一個(gè)編號(hào),這種編號(hào)可唯一標(biāo)識(shí)一個(gè)存儲(chǔ)單元,稱為內(nèi)存地址(或物理地址)。我們可以把內(nèi)存看成一個(gè)從0字節(jié)一直到內(nèi)存最大容量逐字節(jié)編號(hào)的存儲(chǔ)單元數(shù)組,即每個(gè)存儲(chǔ)單元與內(nèi)存地址的編號(hào)相對(duì)應(yīng)。

裝入模塊雖然具有統(tǒng)一的地址空間,但它仍是以“0”作為參考地址,即是浮動(dòng)的。要把它裝入內(nèi)存執(zhí)行,就要確定裝入內(nèi)存的實(shí)際物理地址,并修改程序中與 地址有關(guān)的代碼,這一過(guò)程叫做地址重定位。地址重定位主要是把邏輯地址轉(zhuǎn)換成物理內(nèi)存絕對(duì)地址,這個(gè)工作又稱為地址映射。

圖 4-2 示出了這樣的三步過(guò)程。

d90d2be2-4244-11ec-b939-dac502259ad0.jpg

圖4-2 對(duì)用戶程序的處理步驟

二。 程序的鏈接源程序經(jīng)過(guò)編譯后,可得到一組目標(biāo)模塊,再利用鏈接程序?qū)⑦@組目標(biāo)模塊鏈接,形成裝入模塊。根據(jù)鏈接時(shí)間的不同,可把鏈接分成如下三種:

(1) 、 靜態(tài)鏈接。在程序運(yùn)行之前,先將各目標(biāo)模塊及它們所需的庫(kù)函數(shù),鏈接成一個(gè)完整的裝配模塊,以后不再拆開(kāi)。我們把這種事先進(jìn)行鏈接的方式稱為靜態(tài)鏈接方式。

(2)、 裝入時(shí)動(dòng)態(tài)鏈接。這是指將用戶源程序編譯后所得到的一組目標(biāo)模塊,在裝入內(nèi)存時(shí),采用邊裝入邊鏈接的鏈接方式。

(3)、 運(yùn)行時(shí)動(dòng)態(tài)鏈接。這是指對(duì)某些目標(biāo)模塊的鏈接,是在程序執(zhí)行中需要該(目標(biāo))模塊時(shí),才對(duì)它進(jìn)行的鏈接。

1.靜態(tài)鏈接方式(Static Linking)

我們通過(guò)一個(gè)例子來(lái)說(shuō)明在實(shí)現(xiàn)靜態(tài)鏈接時(shí)應(yīng)解決的一些問(wèn)題。在圖 4-4(a)中示出了經(jīng)過(guò)編譯后所得到的三個(gè)目標(biāo)模塊A、B、C,它們的長(zhǎng)度分別為 L、M和N。在模塊A中有一條語(yǔ)句CALL B,用于調(diào)用模塊B。在模塊B中有一條語(yǔ)句CALL C,用于調(diào)用模塊C。B和C都屬于外部調(diào)用符號(hào),在將這幾個(gè)目標(biāo)模塊裝配成一個(gè)裝入模塊時(shí),須解決以下兩個(gè)問(wèn)題:

(1) 對(duì)相對(duì)地址進(jìn)行修改。在由編譯程序所產(chǎn)生的所有目標(biāo)模塊中,使用的都是相對(duì)地址,其起始地址都為 0,每個(gè)模塊中的地址都是相對(duì)于起始地址計(jì)算的。

在鏈接成一個(gè)裝入模塊后,原模塊B和 C在裝入模塊的起始地址不再是 0,而分別是 L和 L+M,所以此時(shí)須修改模塊B和C中的相對(duì)地址,即把原B中的所有相對(duì)地址都加上 L,把原 C中的所有相對(duì)地址都加上L+M。

(2) 變換外部調(diào)用符號(hào)。將每個(gè)模塊中所用的外部調(diào)用符號(hào)也都變換為相對(duì)地址,如把B 的起始地址變換為 L,把 C 的起始地址變換為 L+M,如圖 4-4(b)所示。

這種先進(jìn)行鏈接所形成的一個(gè)完整的裝入模塊,又稱為可執(zhí)行文件。通常都不再拆開(kāi)它,要運(yùn)行時(shí)可直接將它裝入內(nèi)存。這種事先進(jìn)行鏈接,以后不再拆開(kāi)的鏈接方式,稱為靜態(tài)鏈接方式。

d94308e8-4244-11ec-b939-dac502259ad0.jpg

圖 4-4 程序鏈接示意圖

2.裝入時(shí)動(dòng)態(tài)鏈接(Load-time Dynamic Linking)

用戶源程序經(jīng)編譯后所得的目標(biāo)模塊,是在裝入內(nèi)存時(shí)邊裝入邊鏈接的,即在裝入一個(gè)目標(biāo)模塊時(shí),若發(fā)生一個(gè)外部模塊調(diào)用事件,將引起裝入程序去找出相應(yīng)的外部目標(biāo)模塊,并將它裝入內(nèi)存,還要按照?qǐng)D4-4所示的方式來(lái)修改目標(biāo)模塊中的相對(duì)地址。裝入時(shí)動(dòng)態(tài)鏈接方式有以下優(yōu)點(diǎn):

(1) 、 便于修改和更新。對(duì)于經(jīng)靜態(tài)鏈接裝配在一起的裝入模塊,如果要修改或更新其中的某個(gè)目標(biāo)模塊,則要求重新打開(kāi)裝入模塊。這不僅是低效的,而且有時(shí)是不可能的。若采用動(dòng)態(tài)鏈接方式,由于各目標(biāo)模塊是分開(kāi)存放的,所以要修改或更新各目標(biāo)模塊是件非常容易的事。

(2)、 便于實(shí)現(xiàn)對(duì)目標(biāo)模塊的共享。在采用靜態(tài)鏈接方式時(shí),每個(gè)應(yīng)用模塊都必須含有其目標(biāo)模塊的拷貝,無(wú)法實(shí)現(xiàn)對(duì)目標(biāo)模塊的共享。但采用裝入時(shí)動(dòng)態(tài)鏈接方式,OS則很容易將一個(gè)目標(biāo)模塊鏈接到幾個(gè)應(yīng)用模塊上,實(shí)現(xiàn)多個(gè)應(yīng)用程序?qū)υ撃K的共享。

3.運(yùn)行時(shí)動(dòng)態(tài)鏈接(Run-time Dynamic Linking)

在許多情況下,應(yīng)用程序在運(yùn)行時(shí),每次要運(yùn)行的模塊可能是不相同的。但由于事先無(wú)法知道本次要運(yùn)行哪些模塊,故只能是將所有可能要運(yùn)行到的模塊都全部裝入內(nèi)存,并在裝入時(shí)全部鏈接在一起。顯然這是低效的,因?yàn)橥鶗?huì)有些目標(biāo)模塊根本就不運(yùn)行。

比較典型的例子是作為錯(cuò)誤處理用的目標(biāo)模塊,如果程序在整個(gè)運(yùn)行過(guò)程中都不出現(xiàn)錯(cuò)誤,則顯然就不會(huì)用到該模塊。近幾年流行起來(lái)的運(yùn)行時(shí)動(dòng)態(tài)鏈接方式,是對(duì)上述在裝入時(shí)鏈接方式的一種改進(jìn)。

這種鏈接方式是將對(duì)某些模塊的鏈接推遲到程序執(zhí)行時(shí)才進(jìn)行鏈接,亦即,在執(zhí)行過(guò)程中,當(dāng)發(fā)現(xiàn)一個(gè)被調(diào)用模塊尚未裝入內(nèi)存時(shí),立即由OS去找到該模塊并將之裝入內(nèi)存,把它鏈接到調(diào)用者模塊上。凡在執(zhí)行過(guò)程中未被用到的目標(biāo)模塊,都不會(huì)被調(diào)入內(nèi)存和被鏈接到裝入模塊上,這樣不僅可加快程序的裝入過(guò)程,而且可節(jié)省大量的內(nèi)存空間。

三。 程序的裝入(地址的變換)為了闡述上的方便,我們先介紹一個(gè)無(wú)需進(jìn)行鏈接的單個(gè)目標(biāo)模塊的裝入過(guò)程。該目標(biāo)模塊也就是裝入模塊。在將一個(gè)裝入模塊裝入內(nèi)存時(shí),可以有絕對(duì)裝入方式、可重定位裝入方式和動(dòng)態(tài)運(yùn)行時(shí)裝入方式,下面分別簡(jiǎn)述之。

1.絕對(duì)裝入方式(Absolute Loading Mode)

在編譯時(shí),如果知道程序?qū)Ⅰv留在內(nèi)存的什么位置,那么,編譯程序?qū)a(chǎn)生絕對(duì)地址的目標(biāo)代碼。即按照物理內(nèi)存的位置賦予實(shí)際的物理地址。例如,事先已知用戶程序(進(jìn)程)駐留在從R處開(kāi)始的位置,則編譯程序所產(chǎn)生的目標(biāo)模塊(即裝入模塊)便從R處開(kāi)始向上擴(kuò)展。

絕對(duì)裝入程序按照裝入模塊中的地址,將程序和數(shù)據(jù)裝入內(nèi)存。裝入模塊被裝入內(nèi)存后,由于程序中的邏輯地址與實(shí)際內(nèi)存地址完全相同,故不須對(duì)程序和數(shù)據(jù)的地址進(jìn)行修改。程序中所使用的絕對(duì)地址,既可在編譯或匯編時(shí)給出,也可由程序員直接賦予。

這個(gè)方式的優(yōu)點(diǎn):是CPU執(zhí)行目標(biāo)代碼快。

缺點(diǎn):

1)是由于內(nèi)存大小限制,能裝入內(nèi)存并發(fā)執(zhí)行的進(jìn)程數(shù)大大減少

2)編譯程序必須知道內(nèi)存的當(dāng)前空閑地址部分和其地址,并且把進(jìn)程的不同程序段連續(xù)地存放起來(lái),編譯非常復(fù)雜。由于程序

因此,通常是寧可在程序中采用符號(hào)地址,然后在編譯或匯編時(shí),再將這些符號(hào)地址轉(zhuǎn)換為絕對(duì)地址。

如何把虛擬內(nèi)存地址空間變換到內(nèi)存唯一的一維物理線性空間?涉及到兩個(gè)問(wèn)題:

一是虛擬空間的劃分問(wèn)題。

二是把虛擬空間中已經(jīng)鏈接和劃分好的內(nèi)容裝入內(nèi)存,并將虛擬空間地址映射內(nèi)存地址的問(wèn)題。即地址映射。地址映射就是建立虛擬地址與內(nèi)存地址的關(guān)系。

2.靜態(tài)地址重定位(可重定位裝入方式 Relocation Loading Mode)

絕對(duì)裝入方式只能將目標(biāo)模塊裝入到內(nèi)存中事先指定的位置。在多道程序環(huán)境下,編譯程序不可能預(yù)知所編譯的目標(biāo)模塊應(yīng)放在內(nèi)存的何處,因此,絕對(duì)裝入方式只適用于單道程序環(huán)境。

在多道程序環(huán)境下,所得到的目標(biāo)模塊的起始地址通常是從 0 開(kāi)始的,程序中的其它地址也都是相對(duì)于起始地址計(jì)算的。此時(shí)應(yīng)采用可重定位裝入方式,根據(jù)內(nèi)存的當(dāng)前情況,將裝入模塊裝入到內(nèi)存的適當(dāng)位置。

靜態(tài)地址重定位:即在程序裝入對(duì)目標(biāo)代碼裝入內(nèi)存的過(guò)程中完成,是指在程序開(kāi)始運(yùn)行前,程序中指令和數(shù)據(jù)的各個(gè)地址均已完成重定位,即完成虛擬地址到內(nèi)存地址映射。地址變換通常是在裝入時(shí)一次完成的,以后不再改變。

值得注意的是, 在采用可重定位裝入程序?qū)⒀b入模塊裝入內(nèi)存后, 會(huì)使裝入模塊中的所有邏輯地址與實(shí)際裝入內(nèi)存的物理地址不同,圖4-3示出了這一情況。

d969f32c-4244-11ec-b939-dac502259ad0.jpg

圖 4-3 作業(yè)裝入內(nèi)存時(shí)的情況

例如,在用戶程序的 1000 號(hào)單元處有一條指令LOAD 1,2500,該指令的功能是將 2500 單元中的整數(shù) 365 取至寄存器 1。但若將該用戶程序裝入到內(nèi)存的 10000~15000號(hào)單元而不進(jìn)行地址變換, 則在執(zhí)行11000號(hào)單元中的指令時(shí),它將仍從 2500 號(hào)單元中把數(shù)據(jù)取至寄存器1而導(dǎo)致數(shù)據(jù)錯(cuò)誤。

由圖4-3 可見(jiàn),正確的方法應(yīng)該是將取數(shù)指令中的地址 2500 修改成 12500,即把指令中的相對(duì)地址 2500 與本程序在內(nèi)存中的起始地址 10000 相加,才得到正確的物理地址12500。除了數(shù)據(jù)地址應(yīng)修改外,指令地址也須做同樣的修改,即將指令的相對(duì)地址 1000 與起始地址 10000 相加,得到絕對(duì)地址 11000。

優(yōu)點(diǎn):無(wú)需硬件支持

缺點(diǎn):

1)程序重定位之后就不能在內(nèi)存中搬動(dòng)了;

2)要求程序的存儲(chǔ)空間是連續(xù)的,不能把程序放在若干個(gè)不連續(xù)的區(qū)域中。

3.動(dòng)態(tài)地址重定位(動(dòng)態(tài)運(yùn)行時(shí)裝入方式Dynamic Run-time Loading)

可重定位裝入方式可將裝入模塊裝入到內(nèi)存中任何允許的位置,故可用于多道程序環(huán)境;但這種方式并不允許程序運(yùn)行時(shí)在內(nèi)存中移動(dòng)位置。因?yàn)?,程序在?nèi)存中的移動(dòng),意味著它的物理位置發(fā)生了變化, 這時(shí)必須對(duì)程序和數(shù)據(jù)的地址(是絕對(duì)地址)進(jìn)行修改后方能運(yùn)行。

然而,實(shí)際情況是,在運(yùn)行過(guò)程中它在內(nèi)存中的位置可能經(jīng)常要改變,此時(shí)就應(yīng)采用動(dòng)態(tài)運(yùn)行時(shí)裝入的方式。

動(dòng)態(tài)地址重定位:不是在程序執(zhí)行之前而是在程序執(zhí)行過(guò)程中進(jìn)行地址變換。更確切的說(shuō),是把這種地址轉(zhuǎn)換推遲到程序真正要執(zhí)行時(shí)才進(jìn)行,即在每次訪問(wèn)內(nèi)存單元前才將要訪問(wèn)的程序或數(shù)據(jù)地址變換成內(nèi)存地址。

動(dòng)態(tài)重定位可使裝配模塊不加任何修改而裝入內(nèi)存。為使地址轉(zhuǎn)換不影響指令的執(zhí)行速度,這種方式需要一個(gè)重定位寄存器的支持,

優(yōu)點(diǎn):

1)目標(biāo)模塊裝入內(nèi)存時(shí)無(wú)需任何修改,因而裝入之后再搬遷也不會(huì)影響其正確執(zhí)行,這對(duì)于存儲(chǔ)器緊縮、解決碎片問(wèn)題是極其有利的;

2)一個(gè)程序由若干個(gè)相對(duì)獨(dú)立的目標(biāo)模塊組成時(shí),每個(gè)目標(biāo)模塊各裝入一個(gè)存儲(chǔ)區(qū)域,這些存儲(chǔ)區(qū)域可以不是順序相鄰的,只要各個(gè)模塊有自己對(duì)應(yīng)的定位寄存器就行。

缺點(diǎn):需要硬件支持。

四。 Windows NT動(dòng)態(tài)鏈接庫(kù)5.1. 構(gòu)造動(dòng)態(tài)鏈接庫(kù)

DLL是包含函數(shù)和數(shù)據(jù)的模塊,它的調(diào)用模塊可為EXE或DLL,它由調(diào)用模塊在運(yùn)行時(shí)加載;加載時(shí),它被映射到調(diào)用進(jìn)程的地址空間。在VC中有一類工程用于創(chuàng)建DLL。

庫(kù)程序文件 .C:相當(dāng)于給出一組函數(shù)定義的源代碼;

模塊定義文件 .DEF:相當(dāng)于定義鏈接選項(xiàng),也可在源代碼中定義;如:DLL中函數(shù)的引入和引出(dllimport和dllexport)。

編譯程序利用 .C文件生成目標(biāo)模塊 .OBJ

庫(kù)管理程序利用 .DEF文件生成DLL輸入庫(kù) .LIB和輸出文件 .EXP

鏈接程序利用 .OBJ和 .EXP文件生成動(dòng)態(tài)鏈接庫(kù) .DLL。

5.2. DLL的裝入方法

1)裝入時(shí)動(dòng)態(tài)鏈接(load-time):

編程時(shí)顯式調(diào)用某個(gè)DLL函數(shù),該DLL函數(shù)在可執(zhí)行文件中稱為引入(import)函數(shù)。

鏈接時(shí)需利用 .LIB文件。在可執(zhí)行文件中為引入的每個(gè)DLL建立一個(gè)IMAGE_IMPORT_DESCRIPTOR結(jié)構(gòu)。

在裝入時(shí)由系統(tǒng)根據(jù)該DLL映射在進(jìn)程中的地址改寫(xiě)Import Address Table中的各項(xiàng)函數(shù)指針。Hint是DLL函數(shù)在DLL文件中的序號(hào),當(dāng)DLL文件修改后,就未必指向原先的DLL函數(shù)。在裝入時(shí),系統(tǒng)會(huì)查找相應(yīng)DLL,并把它映射到進(jìn)程地址空間,獲得DLL中各函數(shù)的入口地址,定位本進(jìn)程中對(duì)這些函數(shù)的引用

裝入時(shí)動(dòng)態(tài)鏈接過(guò)程:

(注:Import Address Table是在裝入時(shí)依據(jù)DLL模塊的加載位置確定)。

d98a25a2-4244-11ec-b939-dac502259ad0.png

「DLL函數(shù)的調(diào)用過(guò)程:」

d9b46b50-4244-11ec-b939-dac502259ad0.png

2)運(yùn)行時(shí)動(dòng)態(tài)鏈接(run-time):

在編程時(shí)通過(guò)LoadLibrary(給出DLL名稱,返回裝入和鏈接之后該DLL的句柄), FreeLibrary, GetProcAddress(其參數(shù)包括函數(shù)的符號(hào)名稱,返回該函數(shù)的入口指針)等API來(lái)使用DLL函數(shù)。這時(shí)不再需要引入庫(kù)(import library)。

LoadLibrary或LoadLibraryEx把可執(zhí)行模塊映射到調(diào)用進(jìn)程的地址空間,返回模塊句柄;

GetProcAddress獲得DLL中特定函數(shù)的指針,返回函數(shù)指針;

FreeLibrary把DLL模塊的引用計(jì)數(shù)減1;當(dāng)引用計(jì)數(shù)為0時(shí),拆除DLL模塊到進(jìn)程地址空間的映射;

運(yùn)行時(shí)動(dòng)態(tài)鏈接的例子:

HINSTANCE hInstLibrary;//模塊句柄定義

DWORD (WINAPI *InstallStatusMIF)(char*, char*, char*, char*, char*, char*, char*, BOOL);//函數(shù)指針定義

if (hInstLibrary = LoadLibrary(“ismif32.dll”))//映射

{

InstallStatusMIF = (DWORD (WINAPI *)(char*,char*,char*, char*, char*, char*, char*, BOOL)) GetProcAddress(hInstLibrary, “InstallStatusMIF”);//獲得函數(shù)指針

if (InstallStatusMIF)

{

if (InstallStatusMIF(“office97”, “Microsoft”, “Office 97”, “999.999”, “ENU”, “1234”, ”Completed successfully”, TRUE) !=0)//調(diào)用DLL模塊中的函數(shù)

{

}

}

FreeLibrary(hInstLibrary);//拆除映射

}

END

作者:hguisu原文地址:https://blog.csdn.net/hguisu/article/details/5713099

責(zé)任編輯:haq

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

    關(guān)注

    8

    文章

    3121

    瀏覽量

    75233
  • 程序
    +關(guān)注

    關(guān)注

    117

    文章

    3826

    瀏覽量

    82943

原文標(biāo)題:程序如何運(yùn)行?編譯、鏈接、裝入?

文章出處:【微信號(hào):gh_c472c2199c88,微信公眾號(hào):嵌入式微處理器】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    如何將個(gè)FA模型開(kāi)發(fā)的聲明式范式應(yīng)用切換到Stage模型

    模型切換概述 本文介紹如何將個(gè)FA模型開(kāi)發(fā)的聲明式范式應(yīng)用切換到Stage模型,您需要完成如下動(dòng)作: 工程切換:新建個(gè)Stage模型
    發(fā)表于 06-04 06:22

    快速搞懂C語(yǔ)言程序內(nèi)存分區(qū)!

    程序運(yùn)行過(guò)程,操作系統(tǒng)會(huì)根據(jù)程序的需要,內(nèi)存劃分為多個(gè)功能不同的區(qū)段,以便更高效地管理內(nèi)存
    的頭像 發(fā)表于 03-14 17:37 ?645次閱讀
    快速搞懂C語(yǔ)言<b class='flag-5'>程序</b><b class='flag-5'>內(nèi)存</b>分區(qū)!

    使用Labview做一個(gè)485串口電子秤程序

    232、485串口通訊是最常見(jiàn)的儀器儀表通訊方式之,本文詳細(xì)介紹,用Labview編寫(xiě)個(gè)電子秤的485串口程序.
    發(fā)表于 03-06 18:11 ?0次下載

    用Labview寫(xiě)個(gè)電子稱的485串口程序

    關(guān)鍵詞:Labview + 串口程序 232、485串口通訊是最常見(jiàn)的儀器儀表通訊方式之,本文詳細(xì)介紹,用Labview編寫(xiě)個(gè)電子秤的485串口
    的頭像 發(fā)表于 03-06 09:54 ?710次閱讀
    用Labview寫(xiě)<b class='flag-5'>一</b><b class='flag-5'>個(gè)</b>電子稱的485串口<b class='flag-5'>程序</b>

    KS-Soft:站式集合20個(gè)TCP/IP實(shí)用程序

    IP-Tools 在個(gè)程序中提供了許多 TCP/IP 實(shí)用程序。 這個(gè)屢獲殊榮的程序可以在Windows XP/7/8/10,Window
    的頭像 發(fā)表于 02-11 11:09 ?336次閱讀
    KS-Soft:<b class='flag-5'>一</b>站式集合20<b class='flag-5'>個(gè)</b>TCP/IP實(shí)用<b class='flag-5'>程序</b>

    不停的malloc程序會(huì)異常嗎

    用完,程序應(yīng)該會(huì)異常退出。 于是我找了個(gè)環(huán)境,把程序運(yùn)行起來(lái)試下。 先用虛擬機(jī),跑的個(gè) 32 位的紅帽系統(tǒng),
    的頭像 發(fā)表于 01-14 09:17 ?491次閱讀

    開(kāi)發(fā)第1個(gè)LVGL程序與實(shí)現(xiàn)按鍵操作

    開(kāi)發(fā)第1個(gè)LVGL程序與實(shí)現(xiàn)按鍵操作
    的頭像 發(fā)表于 01-07 13:49 ?2898次閱讀
    開(kāi)發(fā)第1<b class='flag-5'>個(gè)</b>LVGL<b class='flag-5'>程序</b>與實(shí)現(xiàn)按鍵操作

    Linux用戶與創(chuàng)建

    程序用戶: 不是給人登陸使用:是給程序使用(uid:1-999) 個(gè)用戶必須有
    的頭像 發(fā)表于 12-20 14:24 ?730次閱讀
    Linux<b class='flag-5'>中</b>的<b class='flag-5'>用戶</b>與創(chuàng)建

    深入解析Linux程序與進(jìn)程

    什么是程序 組計(jì)算機(jī)能識(shí)別和執(zhí)行的指令,用于指導(dǎo)計(jì)算機(jī)執(zhí)行特定任務(wù)或解決特定問(wèn)題。程序通常由代碼、數(shù)據(jù)和資源文件組成,涉及語(yǔ)法、算法和數(shù)據(jù)
    的頭像 發(fā)表于 12-18 11:01 ?469次閱讀
    深入解析Linux<b class='flag-5'>程序</b>與進(jìn)程

    如何優(yōu)化RAM內(nèi)存使用

    優(yōu)化RAM內(nèi)存使用是個(gè)重要的任務(wù),特別是對(duì)于那些擁有有限內(nèi)存資源的用戶。以下是些優(yōu)化RAM
    的頭像 發(fā)表于 11-11 09:58 ?1433次閱讀

    labview生成可執(zhí)行程序后vi都在同路徑下嗎

    文件打包成個(gè)單獨(dú)的可執(zhí)行文件或安裝程序,這些VI和資源文件在內(nèi)部被組織和引用,而不是作為單獨(dú)的物理文件存放在exe文件所在的文件夾
    的頭像 發(fā)表于 09-04 17:06 ?1321次閱讀

    計(jì)算機(jī)進(jìn)行程序控制工作的基本原理是怎樣的

    計(jì)算機(jī)程序控制是計(jì)算機(jī)科學(xué)個(gè)核心概念,它涉及到計(jì)算機(jī)如何根據(jù)預(yù)設(shè)的指令序列執(zhí)行任務(wù)。 1. 計(jì)算機(jī)硬件基礎(chǔ) 在深入
    的頭像 發(fā)表于 09-04 16:57 ?1522次閱讀

    怎樣keil程序導(dǎo)出

    1. 準(zhǔn)備工作 在開(kāi)始導(dǎo)出程序之前,需要確保已經(jīng)完成了以下準(zhǔn)備工作: 安裝Keil MDK-ARM軟件。 創(chuàng)建個(gè)新的項(xiàng)目,并添加所需的源文件和庫(kù)文件。 配置項(xiàng)目設(shè)置,包括芯片型號(hào)、編譯器選項(xiàng)、鏈接
    的頭像 發(fā)表于 09-02 10:23 ?4806次閱讀

    stm32單片機(jī)燒錄程序會(huì)擦除原來(lái)的程序

    的二進(jìn)制文件寫(xiě)入單片機(jī),并在此過(guò)程自動(dòng)擦除原有的程序內(nèi)容。 具體來(lái)說(shuō),當(dāng)使用燒錄工具進(jìn)行燒錄時(shí),用戶通常只需要選擇正確的芯片型號(hào)和連接方式,然后待燒錄的
    的頭像 發(fā)表于 09-02 09:42 ?4653次閱讀

    個(gè)socket對(duì)應(yīng)個(gè)連接嗎

    在探討“個(gè)socket對(duì)應(yīng)個(gè)連接”這命題時(shí),我們首先需要明確socket的基本概念和它在網(wǎng)絡(luò)通信中的作用。Socket,即套接字,是網(wǎng)
    的頭像 發(fā)表于 08-16 10:55 ?917次閱讀