rb編譯
⑴ LTE維也納模擬平台,怎麼修改代碼才能將RB的分配修改為連續分配~求大神指導!!!!
您好,1) 不可以直接運行,它調用了一些C程序,這些需要首先編譯一下,運行LTE_aux_mex_files.m
2) 大的程序運行框架是這樣的
LTE_sim_batch開頭的.m是主程序
->LTE_load_parameters.m
->LTE_sim_main.m( 一般會調用LTE_sim_main_single.m)
->LTE_sim_main_single.m里會有主要的TX,RX程序
3) 產生隨機數使用了新定義的自帶函數(至少Matlab2011版本以上才能運行)
4) 你可查看自帶的幫助說明文件LTElinkDoc.pdf
5) 有些LTElinkDoc.pdf也沒提到。實際上該平台有些參數不能亂改,因為平台代碼有著大量的"坑"(代碼語法有Bug,運行會出錯),參數設置不合適就會執行這些根本沒調好的代碼。很多程序實際上能運行的只是個"空殼"。很多僵屍代碼還寫在裡面,也發布出來真無語了。
6)除了程序語法Bug和僵屍代碼之外,該平台可運行的部分也有很多和協議嚴重不符的地方,根本是錯的,只不過不影響程序運行罷了。
7)這個平台用的信道建模方法和接收方法都很差勁。有些參數當作已知的用,"作弊"了,實際上這些參數必須估計得到。因此這個平台得到的性能是不能作為參考的。
⑵ 如何在windows上編譯和運行xv6
首先編譯xv6涉及的工具包括gcc,binutils,make,qemu。
xv6需要能生成elf32格式的可執行文件的工具鏈,好在windows下已經有了mingw32這個gcc在windows下的移植,
這樣用mingw32編譯一套在windows下運行的i386-none-elf交叉工具鏈成為可能。
Make和qemu也是如此,這里需要說明的是默認網上下載的qemu可執行文件很可能是不帶有gdb調試功能的,
這也是需要重新自己編譯qemu的原因之一,第二個原因是qemu默認的輸入輸出會被定向到兩個文本文件,
直接後果是xv6的uart將無法使用,自己編譯qemu解決上述兩點。
接下來是修改makefile文件,這里同時涉及dd,sign.pl,vectors.pl,mkfs。
dd在這里的作用是將bootblock和kernel兩個文件組合構建xv6.img鏡像,sign.pl是在bootblock添加0xaa55引導標記,
vectors.pl是生成vectors.S文件,mkfs是構建xv6根文件系統鏡像fs.img用的。
我編寫了wd.c對應dd,sign.c對應sign.pl,vectors.S在linux構建時直接復制了,mkfs.c也需要修改。
wd.c
[cpp] view plain
#include <stdio.h>
int main(int argc, char *argv[])
{
char buf[512];
int n;
FILE *fdin;
FILE *fdout;
fdout = fopen(argv[1], "wb+");
fdin = fopen("bootblock", "rb");
for(n = 1; n > 0; ) {
n = fread(buf, 1, 512, fdin);
fwrite(buf, 1, n, fdout);
}
fclose(fdin);
fdin = fopen("kernel", "rb");
for(n = 1; n > 0; ) {
n = fread(buf, 1, 512, fdin);
fwrite(buf, 1, n, fdout);
}
fclose(fdin);
fclose(fdout);
return 0;
}
sign.c
[cpp] view plain
#include <stdio.h>
int main(void)
{
FILE *fd;
char buf[2];
buf[0] = 0x55;
buf[1] = 0xaa;
fd = fopen("bootblock", "rb+");
fseek(fd, 510, SEEK_SET);
fwrite(buf, 1, 2, fd);
fclose(fd);
return 0;
}
mkfs.diff
[cpp] view plain
19c19
< int fsfd;
---
> FILE *fsfd;
34a35,39
>
> #define bzero(s,n) memset(s,0,n)
> #define b(src,dest,n) memmove(dest,src,n)
> #define index(a,b) strchr(a,b)
>
61c66,67
< int i, cc, fd;
---
> int i, cc;
> FILE *fd;
75,76c81,82
< fsfd = open(argv[1], O_RDWR|O_CREAT|O_TRUNC, 0666);
< if(fsfd < 0){
---
> fsfd = fopen(argv[1], "wb+");
> if(fsfd == NULL){
118c124
< if((fd = open(argv[i], 0)) < 0){
---
> if((fd = fopen(argv[i], "rb+")) == NULL){
137c143
< while((cc = read(fd, buf, sizeof(buf))) > 0)
---
> while((cc = fread(buf, 1, BSIZE, fd)) > 0)
140c146
< close(fd);
---
> fclose(fd);
158,159c164,165
< if(lseek(fsfd, sec * 512L, 0) != sec * 512L){
< perror("lseek");
---
> if(fseek(fsfd, sec * 512L, SEEK_SET) != 0){
> perror("fseek");
162,163c168,169
< if(write(fsfd, buf, 512) != 512){
< perror("write");
---
> if(fwrite(buf, 1, 512, fsfd) != 512){
> perror("fwrite");
204,205c210,211
< if(lseek(fsfd, sec * 512L, 0) != sec * 512L){
< perror("lseek");
---
> if(fseek(fsfd, sec * 512L, SEEK_SET) != 0){
> perror("fseek");
208,209c214,215
< if(read(fsfd, buf, 512) != 512){
< perror("read");
---
> if(fread(buf, 1, 512, fsfd) != 512){
> perror("fread");
⑶ C語言中 fp = fopen(filename, 「rb」); 那個rb是什麼意思啊
C語言中 fp = fopen(filename, 「rb」),里的rb是指:打開一個二進制文件,文件必須存在,只允許讀。
fphzk=fopen("c:\hzk16","rb")是打開C驅動器磁碟的根目錄下的文件hzk16,按二進制方式進行讀操作。兩個反斜線「\ 」中的第一個表示轉義字元,第二個表示根目錄。
(3)rb編譯擴展閱讀
fp = fopen(filename, 「rb」延伸
1、resourcefopen ( string filename, string mode, [ bool use_include_path, [resource zcontext]] ),fopen() 函數打開一個文件或 URL。如果 fopen() 失敗,它將返回 FALSE 並附帶錯誤信息。您可以通過在函數名前面添加一個 '@' 來隱藏錯誤輸出。
2、fopen() 將 filename 指定的名字資源綁定到一個流上。如果 filename 是 "scheme://..." 的格式,則被當成一個 URL,PHP 將搜索協議處理器(也被稱為封裝協議)來處理此模式。
3、如果該協議尚未注冊封裝協議,PHP 將發出一條消息來幫助檢查腳本中潛在的問題並將 filename 當成一個普通的文件名繼續執行下去。
⑷ 後綴名 rb是什麼
.rb文件格式是Ruby創建的程序源代碼,Ruby是一種為簡單快捷的面向對象編程而創建的腳本語言,通過Ruby來編譯運行。
⑸ C++代碼rb
Data(const StringType& string) : type_{Type::String}
改為Data(const StringType& string) : type_(Type::String)//注意是圓括弧不是花括弧!
⑹ 程序的指令是RISC還是CISC是由什麼決定編譯程序
risc(精簡指令集計算機)和cisc(復雜指令集計算機)是當前cpu的兩種架構。它們的區別在於不同的cpu設計理念和方法。
早期的cpu全部是cisc架構,它的設計目的是要用最少的機器語言指令來完成所需的計算任務。比如對於乘法運算,在cisc架構的cpu上,您可能需要這樣一條指令:mul
addra,
addrb就可以將addra和addrb中的數相乘並將結果儲存在addra中。將addra,
addrb中的數據讀入寄存器,相乘和將結果寫回內存的操作全部依賴於cpu中設計的邏輯來實現。這種架構會增加cpu結構的復雜性和對cpu工藝的要求,但對於編譯器的開發十分有利。比如上面的例子,c程序中的a*=b就可以直接編譯為一條乘法指令。今天只有intel及其兼容cpu還在使用cisc架構。
risc架構要求軟體來指定各個操作步驟。上面的例子如果要在risc架構上實現,將addra,
addrb中的數據讀入寄存器,相乘和將結果寫回內存的操作都必須由軟體來實現,比如:mov
a,
addra;
mov
b,
addrb;
mul
a,
b;
str
addra,
a。這種架構可以降低cpu的復雜性以及允許在同樣的工藝水平下生產出功能更強大的cpu,但對於編譯器的設計有更高的要求。
⑺ RB文件的作用
.rb文件是by語言的源文件,可以用記事本之類的文本工具打開看。
電腦上如果安裝了ruby語言的運行環境,這個文件還可以雙擊直接運行(windows)。
⑻ ruby: No such file or directory -- dk.rb (LoadError) 在windows上裝devkit出現的問題,怎麼解決
應該是64位系統的問題。據說在dk.rb file注冊處加一句'Software\Wow6432Node\RubyInstaller\MRI'就好了。但是我失敗了...你可以試一下
⑼ if rb_1.checked then prm_jzd='4418' else prm_jzd<>'4418' end if prm_jzd<>'4418' 不能編譯
prm_jze <> '4418'不是賦值語句,所以不能編譯。
這種語句只能用作判斷用,而不能直接用。
所以,如果你想在rb_1.checked不成立的時候,不讓prm_jzd = '4418'
完全可以賦值給prm_jzd一個其他的值。
如:prm_jzd = '0'這樣它就一定不等於了。
⑽ java:ResourceBundle rb=ResourceBundle.getBundle("LocalString");
LocalString 代表配置文件的路徑
com.wxrk..property 表示在包com的wxrk的下面有個property.properties的配置文件
requestheader.title 在這個配置文件里肯定有這么一行這個是名稱,後面有個=值