C语言在WIndows 10上编写的程序用什么编译器编译比较好,下载地址是什么?

C语言在WIndows 10上编写的程序用什么编译器编译比较好,下载地址是什么?

4个回答

  • VSCODE,当下最流行的开源极简编辑器,应该说其大小和功能是处于文本编辑器和大型IDE之间的,个人很喜欢,推荐!C语言需要配置以下环境,网上一搜一大堆,你可以玩一玩。
  • *下载地址, https://code.visualstudio.com/Download

编译C语言个人感觉Dev C++挺好用,可以调各种高光代码样式,环境舒适 下载地址:https://pc.qq.com/detail/16/detail_163136.html

或者是Coldblocks功能强大的一款编辑器,很多老师授课都是用的这个 下载地址:http://www.codeblocks.org

你可以用vc6.0或者vs2010,vs2015,vs2017都可以
vc6.0:链接: https://pan.baidu.com/s/1KgMyN1XdES2bw9pev12-wQ 提取码: fdgb
vs2010:链接: https://pan.baidu.com/s/1t1hhw55cwadISX-MqMqnUg 提取码: tevw
vs2015:链接: https://pan.baidu.com/s/1-IFoHIBRqqWIfe0Kk9C7CQ 提取码: d2si
vs2017:链接: https://pan.baidu.com/s/1gwVnZyQfp1bVJ1K9HBuIBQ 提取码: 45nz

其他的我就不推荐了,有些编译和运行需要插件或者cmd

zjh12707
zjh12707 我觉得vs2010就挺好
大约 2 个月之前 回复
shunfurh
编程介的小学生 没有会员,下载好慢,你这个不行
大约 2 个月之前 回复

个人喜欢VisualStudio2015
上msdn下载,啥版本都有
http://msdn.itellyou.cn

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
C语言编译器的小白问题
我是一名C++初学者,学习C++时用visual Studio2010编写代码。最近在听网课的时候有提交作业需要在网页上选择C语言编辑器的,有gcc,g++什么的,请问大神C语言编译器是什么?为什么会有C语言编译器?一般该怎么选择?使用C/C++编程。
编译器和开发工具有什么区别?
c语言快学完了,学校在让我们视频学习一个ATM的系统,这个视频里有说到用的是visual studio 2010来编写,但是我们平时上课用的是codeblocks..请问这两者有什么区别吗?这个编写可以用codeblocks来编写吗?平时说的编译器和开发工具是一回事吗?
vs2010+opencv编写的文本识别程序交叉编译时遇到问题
最近刚接触mini2440,想把自己写的识别字母和数字的程序运行到mini2440开发板上, 于是在PC机上运用opencv和vs2010写了识别程序,现在的问题是不能将之在开发板上运行。 目前了解的信息是需要进行交叉编译生成可执行文件,然后通过调试器下载到目标开发板上。 开发板上已经移植了opencv,但是在UBUNTU上进行交叉编译时程序能编译通过,但运行出错。 我识别程序是用c语言写的,不知道可以能够实现将程序交叉编译成功并下载到mini2440开发板上嘛?
GNU编译器的公式计算问题,怎么使用C语言的程序的设计的过程的编写的代码去解决的
Problem Description The GNU Compiler Collection (usually shortened to GCC) is a compiler system produced by the GNU Project supporting various programming languages. But it doesn’t contains the math operator “!”. In mathematics the symbol represents the factorial operation. The expression n! means "the product of the integers from 1 to n". For example, 4! (read four factorial) is 4 × 3 × 2 × 1 = 24. (0! is defined as 1, which is a neutral element in multiplication, not multiplied by anything.) We want you to help us with this formation: (0! + 1! + 2! + 3! + 4! + ... + n!)%m Input The first line consists of an integer T, indicating the number of test cases. Each test on a single consists of two integer n and m. Output Output the answer of (0! + 1! + 2! + 3! + 4! + ... + n!)%m. Constrains 0 < T <= 20 0 <= n < 10^100 (without leading zero) 0 < m < 1000000 Sample Input 1 10 861017 Sample Output 593846
利用c语言编写图形。。。。。。
我想利用c语言编写图形,我用的是vc++编译器,不知道用什么头文件。请各位长辈指教。
用c语言写播放音乐的程序,为何出现#ignoring pragma comment,如何解决?
各位大佬,我用的软件是codeblocks,电脑是惠普的暗夜精灵4,以下是我编写播放音乐的c语言的代码 #include< stdio.h> #include < stdlib.h> #include< windows.h> #include< mmsystem.h> #pragma comment(lib,"winmm.lib") int main() { while(1) { PlaySound(TEXT("\\sounds"), NULL, SND_FILENAME | SND_ASYNC | SND_LOOP ); return 0; } } 也在编译器的链接器设置中写了-lwinmm,也在该程序的文件夹的bin-debug中放置文件夹songs,里面都是wav式的音乐,但编译时始终出现ignoring #pragma comment的字样, 那位大神路过能帮忙解决一下,不胜感激。 通过测试,其实是使用的vc有问题,使用vs2017完全没有问题
这是什么问题,是编译器的小缺陷吗?
本人最近在用STC12C5A60S2做一个AD电压检测,编写了如下程序 void ADC_SEL(unsigned char shift,unsigned char num) { //unsigned char c = 0x1; P1ASF = num << shift; } 我想用对num(num = 1)的移位来打开P1口AD允许,但是经过移位后发现P1ASF = 0,于是我截取了如下汇编代码: 反汇编: C:0x054F ED MOV A,R5 C:0x0550 A807 MOV R0,0x07 C:0x0552 08 INC R0 C:0x0553 8002 SJMP C:0557 C:0x0555 C3 CLR C C:0x0556 33 RLC A C:0x0557 D8FC DJNZ R0,C:0555 C:0x0559 F59D MOV P1ASF(0x9D),A 按C语言调用规则,第一个参数是放在R7寄存器里的,也就是说R7里的数是左移位数,但我并没有在代码里看到对R7的处理。而是编译器自作主张将ACC移了8位,那肯定最后就等于零了呀。这是不是编译器的一个小缺陷?编译器我用的Keil4请问各位高手怎么解决?
在ise14.7中,使用verilog编好的程序生成RTL原理图时,看起来没问题,但是生成的Technology原理图却少了很多东西,好多信号线都直接接地了,有大神可以指点迷津吗?
我在编写一个控制信号的程序时,编译通过后,生成了RTL原理图和Technology原理图,但是看起来好像RTL原理图没什么问题, 但是Technology原理图少了很多东西,比如触发器,很多信号线也直接接地了。 我想问的是,如果程序要烧写到CPLD中,最关键的是要看Technology原理图是吧? 下面是我的一些代码,是我程序写的不对的原因吗?初学者,请见谅~ ``` module process01 ( input I_spi_cs0, input [3:0] channel0, input O_rx_done, output reg opwm0a, output reg opwm0b, output reg opwm01, output reg opwm02, output reg opwm03, output reg opwm04, output reg opwm05, output reg opwm06, output reg opwm07, output reg opwm08, output reg opwm09, output reg opwm010, output reg opwm011 ); always @(posedge O_rx_done ) begin case(channel0) 4'd0,4'd11,4'd12,4'd13,4'd14,4'd15: begin opwm0a <= 1'd0; opwm0b <= 1'd0; opwm01 <= 1'd0; opwm02 <= 1'd0; opwm03 <= 1'd0; opwm04 <= 1'd0; opwm05 <= 1'd0; opwm06 <= 1'd0; opwm07 <= 1'd0; opwm08 <= 1'd0; opwm09 <= 1'd0; opwm010 <= 1'd0; opwm011 <= 1'd0; end 4'd1: begin opwm0b <= 1'd1; opwm01 <= 1'd1; opwm02 <= 1'd1; end 4'd2: begin opwm0a <= 1'd1; opwm02 <= 1'd1; opwm03 <= 1'd1; end 4'd3: begin opwm0b <= 1'd1; opwm03 <= 1'd1; opwm04 <= 1'd1; end 4'd4: begin opwm0a <= 1'd1; opwm04 <= 1'd1; opwm05 <= 1'd1; end 4'd5: begin opwm0b <= 1'd1; opwm05 <= 1'd1; opwm06 <= 1'd1; end 4'd6: begin opwm0a <= 1'd1; opwm06 <= 1'd1; opwm07 <= 1'd1; end 4'd7: begin opwm0b <= 1'd1; opwm07 <= 1'd1; opwm08 <= 1'd1; end 4'd8: begin opwm0a <= 1'd1; opwm08 <= 1'd1; opwm09 <= 1'd1; end 4'd9: begin opwm0b <= 1'd1; opwm09 <= 1'd1; opwm010 <= 1'd1; end 4'd10: begin opwm0a <= 1'd1; opwm010 <= 1'd1; opwm011 <= 1'd1; end default: begin opwm0a <= 1'd0; opwm0b <= 1'd0; opwm01 <= 1'd0; opwm02 <= 1'd0; opwm03 <= 1'd0; opwm04 <= 1'd0; opwm05 <= 1'd0; opwm06 <= 1'd0; opwm07 <= 1'd0; opwm08 <= 1'd0; opwm09 <= 1'd0; opwm010 <= 1'd0; opwm011 <= 1'd0; end endcase end endmodule ``` ![图片说明](https://img-ask.csdn.net/upload/202003/02/1583116320_475850.jpg) 这是生成的技术原理图 ![图片说明](https://img-ask.csdn.net/upload/202003/02/1583116373_46671.jpg) 这是生成的RTL原理图
C语言新手 编译器没有报错但运行出错 请问程序是哪里出了问题 感谢
编写某公司的员工管理系统,员工最多为50人,员工信息以结构体数组形式存储,请完成员工档案的输入,并统计所有性别为M的记录的个数。 #include<stdio.h> int main() { struct stuff{ int id; char name[15]; char sex; int salary; }; struct stuff stu[50]; int i,n,id,m,sum=0; do{ printf("id:\n"); scanf("%d",&id); for(i=0;i<n;i++) { if(id==stu[i].id){ printf("This id is exits"); return;} } stu[i].id=id; printf("name:\n"); gets(stu[i].name); printf("sex:\n"); scanf("%c",&stu[i].sex); if(stu[i].sex=='M') sum++; printf("salary:\n"); scanf("%d",&stu[i].salary); n++; printf("continues to add?"); scanf("%c",&m); }while(m!='N'); printf("%d",n); }
友善之臂mini2440 运行uart裸板程序失败
用的板子是友善之臂mini2440,自己学习韦东山的一期视频,在写uart裸板程序时发现怎么都无法实现功能 s3c2440.h ``` /* GPIO寄存器 */ #define GPBCON (*(volatile unsigned int*)0x56000010) #define GPGCON (*(volatile unsigned int*)0x56000060) #define GPHCON (*(volatile unsigned int*)0x56000070) #define GPBDAT (*(volatile unsigned int*)0x56000014) #define GPGDAT (*(volatile unsigned int*)0x56000064) #define GPHUP (*(volatile unsigned int*)0x56000078) /* UART寄存器 */ #define UCON0 (*(volatile unsigned int*)0x50000004) #define UBRDIV0 (*(volatile unsigned int*)0x50000004) #define ULCON0 (*(volatile unsigned int*)0x50000028) #define UTRSTAT0 (*(volatile unsigned int*)0x50000010) #define UTXH0 (*(volatile unsigned char*)0x50000020) #define URXH0 (*(volatile unsigned char*)0x50000024) #define UFCON0 (*(volatile unsigned int*)0x50000008) #define UMCON0 (*(volatile unsigned int*)0x5000000C) #define UCON1 (*(volatile unsigned int*)0x50004004) #define UBRDIV1 (*(volatile unsigned int*)0x50004028) #define ULCON1 (*(volatile unsigned int*)0x50004000) #define UTRSTAT1 (*(volatile unsigned int*)0x50004010) #define UTXH1 (*(volatile unsigned char*)0x50004020) #define URXH1 (*(volatile unsigned char*)0x50004024) #define UFCON1 (*(volatile unsigned int*)0x50004008) #define UMCON1 (*(volatile unsigned int*)0x5000400C) ``` uart.h ``` #ifndef _UART_H #define _UART_H void uart0_init(); int putchar(int c); int getchar(void); int puts(const char *s); #endif ``` uart.c ``` #include "s3c2440.h" /* 设置引脚用于串口 */ void uart0_init() { GPHCON &= ~((3<<8)|(3<<10)); //清空GPH2,GPH3 GPHCON |= ((2<<8)|(2<<10)); //GPH4,GPH5用于TXD1,RXD1 GPHUP &= ~((1<<4)|(1<<5)); //使能内部上拉 UFCON0 = 0x00; //不使用FIFO UMCON0 = 0x00; //不使用流控 ULCON0 = 0x00000003; //设置数据格式8n1:8位数据位,无校验位,1停止位 UCON0 = 0x00000005; //PCLK,中断/查询模式 UBRDIV0 = 26; //设置波特率 115200 } int putchar(int c) { while(!(UTRSTAT0) & (1<<2)) UTXH0 = (unsigned char)c; } int getchar(void) { while(!(UTRSTAT0) & (1<<0)) return URXH0; } int puts(const char *s) { while(*s) { putchar(*s); s++; } } ``` main.c ``` #include "s3c2440.h" #include "uart.h" int main(void) { unsigned char c; uart0_init(); puts("hello,world!\n"); while(1) { c = getchar(); putchar(c); } return 0; } ``` start.S ``` .text .global _start _start: /*设置内存:sp 栈*/ ldr sp,=4096 /*nand启动*/ /* 关闭看门狗 */ ldr r0, =0x53000000 ldr r1, =0 str r1, [r0] /* 设置CPU工作于异步模式 */ mrc p15,0,r0,c1,c0,0 orr r0,r0,#0xc0000000 //R1_nF:OR:R1_iA mcr p15,0,r0,c1,c0,0 /* 设置MPLL,FCLK */ /* CLKDIVN(0x4c000014) = 0x5 */ ldr r0, =0x4c000014 ldr r1, =0x5 /* HCLK = FCLK/4 = 100 MHz , PCLK = HCLK/2 = 50MHz */ str r1, [r0] /* 设置MPLLCON(0x4c000004) = (92<<12)|(1<<4)|(1<<0) FCLK = 400 MHz*/ ldr r0, =0x4c000004 ldr r1, =(92<<12)|(1<<4)|(1<<0) str r1,[r0] /*调用main*/ bl main halt: b halt ``` Makefile ``` all: arm-linux-gcc -c -o uart.o uart.c arm-linux-gcc -c -o main.o main.c arm-linux-gcc -c -o start.o start.S arm-linux-ld -Ttext 0 start.o uart.o main.o -o uart.elf arm-linux-objcopy -O binary -S uart.elf uart.bin arm-linux-objdump -D uart.elf > uart.dis clean: rm *.bin *.o *.elf *.dis ``` 程序写完后扔到虚拟机里编译生成.bin文件,之后用友善之臂自己编写的下载工具进行烧写 ![图片说明](https://img-ask.csdn.net/upload/202001/07/1578379644_335442.png) 之后选择nand启动,连接串口,并没有看到返回字符串hello,world! 特来请教
求各位大神帮忙做一下编译原理程序设计
1.设计词法分析器 设计各单词的状态转换图,并为不同的单词设计种别码。将词法分析器设计成供语 法分析器调用的子程序。功能包括: 具备预处理功能。将不翻译的注释等符号先滤掉,只保留要翻译的符号串,即要求设计一个供词法分析调用的预处理子程序; 能够拼出语言中的各个单词;http://ask.csdn.net/# 将拼出的标识符填入符号表; 返回(种别码, 属性值)。 2.目标代码生成器 c. 能完成指定寄存器个数的情况下将一中间代码程序段翻译成汇编语言目标代码(汇编指令应包括加、减、乘、除),要求指令条数最少的情况下,尽量使用寄存器,尽量少访问内存,这样才能做到运行效率高。 这两题用c或c++编写,急!!!!!
萌新求解!!!!!vs2017写c语言,函数参数间不能传址吗?
最近在学C语言,也就是粗略学一下,培养一下自己的逻辑思维,毕竟C语言是所有语言基础嘛,用的是vs2017,想提前熟练这个程序员最常用的编译器 有时候也会遇上兼容性问题,但一般csdn上一搜就能解决问题 但是在学到函数参数的时候,问题出现了,在实现函数参数传址的时候,发现实参的址并不能传给实参,请大佬们看一下是编译器问题还是我编写问题,有没有解决方案 举个简单的例子 ``` #include<stdio.h> float average(int b[10]); void main() { float q; int a[10],p; for (p = 0; p <= 9; p++) { scanf_s("%d", &a[p]); } q=average(a[10]); printf("%f", q); system("pause"); } float average(int b[10]) { float ave; int i,sum; for (i = 0,sum=0; i <= 9; i++) { sum += b[i]; } ave = sum / 10.0; return ave; } ``` 在运行这个程序的时候 ![图片说明](https://img-ask.csdn.net/upload/201903/23/1553333834_449878.png) a的地址是0x0053fd68 继续运行 ![图片说明](https://img-ask.csdn.net/upload/201903/23/1553333997_977258.png) b还是未赋址状态 另外 ![图片说明](https://img-ask.csdn.net/upload/201903/23/1553334067_377884.png) 显示读取访问权限冲突 萌新求解!!!!!
在visual studio编写稀疏矩阵的过程中运行出现“0xC0000005: 读取位置 0x9A696484 时发生访问冲突。”怎么解决?
在稀疏矩阵的乘法运算过程中运行出现“0xC0000005: 读取位置 0x9A696484 时发生访问冲突。”情况,找了很久都没发现问题,编程小白寻求各位大神帮忙。 稀疏矩阵的乘法那块我是根据严蔚敏的数据结构改写的,出现了错误不知道如何修改。 以下为代码: ``` #include<stdio.h> #include<stdlib.h> #define _CRT_SECURE_NO_WARNINGS #pragma warning(disable:4996) #define MAXSIZE 100 typedef int DataType; typedef struct { int row, col; DataType value; }Triple; typedef struct { Triple data[MAXSIZE + 1]; int SqPos[10]; int mu, nu, tu; }SMaxtrix; SMaxtrix CreateSMaxtrix() //创建矩阵 { SMaxtrix M; int i; printf("请输入行数"); scanf_s("%d", &M.mu); //输入行数 printf("请输入列数"); scanf_s("%d", &M.nu); //输入列数 printf("请输入非0的个数"); scanf_s("%d", &M.tu); while (M.tu > M.mu*M.nu) { printf("输入错误,请重新输入\n"); scanf_s("%d", &M.tu); } for (i = 0; i < M.tu; i++) { printf("请按行序顺序输入第%d个非零元素所在的行(0~%d),""列(0~%d),元素值:(逗号分隔)\n", i, M.mu-1, M.nu-1); scanf_s("%d,%d,%d", &M.data[i].row, &M.data[i].col, &M.data[i].value); } return M; } void PrintM(SMaxtrix M) { int i; printf("\n %d行%d列%d个非零元素。\n", M.mu, M.nu, M.tu); printf("%4s %4s %8s\n", "row", "col", "value"); for (i = 0; i < M.tu; i++) { printf("%4d %4d %8d\n", M.data[i].row, M.data[i].col, M.data[i].value); } } SMaxtrix TransMatrix(SMaxtrix M) //矩阵转置 { SMaxtrix T; int rowsize[MAXSIZE]; int rowstart[MAXSIZE]; int i, j, k; T.mu = M.nu; T.nu = M.mu; T.tu = M.tu; if (T.tu > 0) { for (j = 0; j < M.nu; j++) rowsize[j] = 0; for (i = 0; i < M.tu; i++) { j = M.data[i].col; rowsize[j] = rowsize[j] + 1; } printf("\n rowsize[]:"); for (i = 0; i < M.nu; i++) printf(" %d ", rowsize[i]); printf("\n"); rowstart[0] = 0; for (j = 1; j < M.nu; j++) rowstart[j] = rowstart[j - 1] + rowsize[j - 1]; printf("\n rowstart[]:"); for (i = 0; i < M.nu; i++) printf("%d ", rowstart[i]); printf("\n"); for (i = 0; i < M.tu; i++) { j = M.data[i].col; k = rowstart[j]; T.data[k].row = M.data[i].col; T.data[k].col = M.data[i].row; T.data[k].value = M.data[i].value; rowstart[j] = rowstart[j] + 1; } } return T; } void MultSMaxtrix(SMaxtrix M, SMaxtrix Q)//稀疏矩阵乘法 { SMaxtrix N; int ctemp[MAXSIZE + 1]; int tp,p,brow=0,t,q,ccol; if (M.nu != Q.mu) printf("error"); N.mu = M.mu; N.nu = Q.nu; N.tu = 0;//矩阵N初始化 if (M.tu*Q.tu != 0)//N是非零矩阵 { for (int i = 1; i <= M.mu; i++)//处理M的每一行 { ctemp[0] = 0;//当前行个元素累加器清零 N.SqPos[i] = N.tu + 1; if (i < M.mu) tp = M.SqPos[i + 1]; else { tp = M.tu + 1; } for (p = M.SqPos[i]; p < tp; p++)//对当前行中每一个非零元 { brow = M.data[p].col;//找到对应元在N中的行号(编译后这里出现问题!!) if (brow < M.mu) t = Q.SqPos[brow + 1]; else { t = Q.tu + 1; } for (q = Q.SqPos[brow]; q < t; ++q) { ccol = Q.data[q].col;//乘积元素在N中列号 ctemp[ccol] += M.data[p].value * Q.data[p].value; }//for q } for(ccol =1;ccol<=N.nu;ccol++)//压缩存储该行非零元 if (ctemp[ccol]) { if (++N.tu > MAXSIZE) printf("error"); N.data[N.tu].row = i; N.data[N.tu].col = ccol; N.data[N.tu].value = ctemp[ccol]; } } } PrintM(N); } main() { SMaxtrix M; M = CreateSMaxtrix(); PrintM(M); printf("\n"); SMaxtrix T; T = TransMatrix(M); PrintM(T); SMaxtrix Q; Q = CreateSMaxtrix(); PrintM(Q); printf("\n"); MultSMaxtrix(M, Q); } ```
手持器开发中,事件引发的函数中怎样使用父函数中的变量
求高手解决一个问题。我用GNU for ARM编译器编写手持器程序,C语言。在一个函数function1()中有一个变量a;函数中触发事件OnClick=function2;事件触发函数为 int function2(HWND Obj,PMsg Msg); 怎样才能使得变量a在function2函数中也能用,我不想用全局变量,而function2又不能有其他参数。 求大神帮忙解决。
DSP F2812在C语言代码中内嵌汇编语言控制GPIO操作
我想用F2812的gpio口模拟一个通信信号,对频率一致性要求很严格,目前直接用C语言写的方式是: GpioDataRegs.GPDDAT.all = period; period &= 0x62; asm("RPT #31 || NOP"); GpioDataRegs.GPDDAT.all = period; period |= 0x1; asm("RPT #31 || NOP"); 其中period 是一个unsigned int 的变量,用CCS查看了反汇编出来的汇编代码,发现编译器会随机在上下两条GPIO中插入数量不等汇编指令,造成最终输出的信号频率一致性比较差,有的长有的短,但是我又不懂DSP的汇编言语,求大神告诉我这四条指令: “ GpioDataRegs.GPDDAT.all = period; period &= 0x62; GpioDataRegs.GPDDAT.all = period; period |= 0x1;“ 用汇编怎么内嵌编写。 这里贴上ccs反汇编的代码: "AND AL, *+XAR4[1], #0xff" "MOV @0x2c, AH" "RPT #31 || NOP" "ANDB AH, #0x62" "MOV @0x2c, AH" "RPT #31 || NOP" "MOVW DP, #0xfe46" "AND AL, @0x27, #0xff00" "MOVW DP, #0x1c3" "OR AL, @AH" "MOV AH, @AL" "LSR AH, 8" "MOV @0x2c, AH" "RPT #31 || NOP" "ANDB AH, #0x62" "ORB AL, #0x1" "MOVB AL.MSB, @AH" "OR @AL, #0x0100" "MOV @0x2c, AH" "MOVW DP, #0xfe46" "MOV @0x27, AL" "RPT #31 || NOP" "MOVW DP, #0x1c3" "AND AH, *+XAR4[2], #0xff" "MOV @0x2c, AH" "RPT #31 || NOP" "ANDB AH, #0x62" "MOV @0x2c, AH" "RPT #31 || NOP" "MOVW DP, #0xfe46" "AND AL, @0x28, #0xff00" "MOVW DP, #0x1c3" "OR AL, @AH" "MOV AH, @AL" "LSR AH, 8" "MOV @0x2c, AH" "RPT #31 || NOP" "ANDB AH, #0x62" "ORB AL, #0x1" "MOVB AL.MSB, @AH" "OR @AL, #0x0100" "MOV @0x2c, AH" "MOVW DP, #0xfe46" "MOV @0x28, AL" "RPT #31 || NOP" "MOVW DP, #0x1c3" "AND AH, *+XAR4[3], #0xff" "MOV @0x2c, AH" "RPT #31 || NOP" "ANDB AH, #0x62" "MOV @0x2c, AH" "RPT #31 || NOP" "MOVW DP, #0xfe46" "AND AL, @0x29, #0xff00" "MOVW DP, #0x1c3" "OR AL, @AH" "MOV AH, @AL" "LSR AH, 8" "MOV @0x2c, AH" "RPT #31 || NOP" "ANDB AH, #0x62" "ORB AL, #0x1" "MOVB AL.MSB, @AH" "OR @AL, #0x0100" "MOV @0x2c, AH" "RPT #31 || NOP"
熟悉操作系统开发的大佬帮忙解答一下问题吧
是这样的,我的毕设是写一个操作系统,可是我属于那种什么都不会的人,我目前有以前一个学长的代码,可是并不知道怎么运行,网上搜索总感觉找不到关键词,搜不到我想要的东西,就想来这里问问有没有人知道该怎么办,下面是我那个学长写的这个操作系统的开发流程 本操作系统的开发流程如下: a)利用编辑器(notepad++)编写C语言和汇编语言的源代码以及Makefile文件。 b)利用Windows下的编译工具将C语言和汇编语言的原代码编译为相应的机器码并规定固定名称。 c)利用Makefile语法将编译产生的机器码文件链接并用工具制作为软盘镜像。 d)利用qemu轻量级模拟器载入软盘镜像运行操作系统并测试功能。 有没有大佬能给我解答一下我应该安装哪些软件,如何运行这些代码,这个操作系统的完整代码导师已经给我了,但是我不知道该用什么软件运行,谢谢各位大佬
为什么覆盖HttpServletRequestWrapper中的方法时,编译给我警告。
我编写的一个过滤器程序,功能是对客户端提交的请求中的某些字符进行转换,具体代码如下: package michael; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequestWrapper; public final class MyRequestWrapper extends HttpServletRequestWrapper { public MyRequestWrapper(HttpServletRequest request) { super(request); } //重点看这个地方,我的这个类是从HttpServletRequestWrapper继承而来,父类中也有个getParameter(). public java.lang.String getParameter(java.lang.String name) { String value=super.getParameter(name); if(null!=value) return toHtml(value.trim()); else return null; } private String toHtml(String str) { if(str==null) return null; StringBuffer sb=new StringBuffer(); int len=str.length(); for(int i=0; i<len; i++) { char c=str.charAt(i); switch(c) { case ' ': sb.append("&nbsp"); break; case '\n': sb.append("<br>"); break; case '\r': break; case '\'': sb.append("&#39;"); break; case '<': sb.append("&lt;"); break; case '>': sb.append("&gt;"); break; case '&': sb.append("&amp"); break; case '"': sb.append("&#34"); break; case '\\': sb.append("&#92"); break; default: sb.append(c); } } return sb.toString(); } } 重点看上面注释的地方,我不过是覆盖了父类的一个方法,而且该方法在父类中是public的,按道理应该不可能出错的,可是编译的时候就给我报这个错,如下图所示,我用的是jdk1.5,tomcat6.0.16。大家帮忙给我看下,谢谢了!
求高手解答,这是什么问题?
![图片说明](https://img-ask.csdn.net/upload/201804/12/1523519367_346381.jpg) 我跟随剑桥大学计算机实验室的树莓派裸机程序编写教程编写树莓派3的裸机程序,工具是arm-none-eabi-as(YARGATO),makefile我用的他们的,本机操作系统Windows10,当我编译完成时,出现了图片中的故障,并且我将生成的kernel.img拷到SD卡上时竟无法点亮小灯。我的功能是实现在子函数里的,必须要把函数里的代码拿出来才能生效,不懂了?怀疑就是图片中的原因,求各位高手解答。附代码如下: ``` .arch armv6 .align 2 .globl _start .section .init _start: b main main: mov sp,#0x8000 mov r0,#0x9 mov r1,#1 bl SetGpioFunction mov r0,#0x9 mov r1,#1 bl SetGPIO loop$: b loop$ .globl SetGpioFunction @function SetGpioFunction: cmp r0,#0x28 cmpls r1,#0x7 movhi pc,lr push {lr} mov r2,r0 ldr r0,=0x3f200000 floop: cmp r2,#0x9 subhi r2,#0xa addhi r0,#0x4 bhi floop add r2,r2,r2,lsl #1 lsl r1,r2 str r1,[r0] pop {pc} .globl SetGPIO @function SetGPIO: cmp r0,#0x28 movhi pc,lr push {lr} mov r2,r0 ldr r0,=0x3f200000 lsl r3,r2,#5 lsl r3,#2 add r0,r3 and r2,#0x1f mov r3,#1 lsl r3,r2 cmp r1,#0 streq r3,[r0,#0x28] strne r3,[r0,#0x1c] pop {pc} ``` kernel.ld ``` /****************************************************************************** * kernel.ld * by Alex Chadwick * * A linker script for generation of raspberry pi kernel images. ******************************************************************************/ SECTIONS { /* * First and formost we need the .init section, containing the code to * be run first. We allow room for the ATAGs and stack and conform to * the bootloader's expectation by putting this code at 0x8000. */ .init 0x8000 : { *(.init) } /* * Next we put the rest of the code. */ .text : { *(.text) } /* * Next we put the data. */ .data : { *(.data) } /* * Finally comes everything else. A fun trick here is to put all other * sections into this section, which will be discarded by default. */ /DISCARD/ : { *(*) } } ```
汇编语言第8章实验7的四个illegal use of register
在完成王爽老师汇编语言的实验7的时候,我自己的思路是先导入年份,循环;在导入收入,循环;再导入雇员数,循环; 在这之中,利用程序中入栈的si和di来定位收入和人数的位置,再用si和di计算平均收入,导入并循环。 思路应该是没有问题的,但是编译的时候系统提示有很多错误。在一遍遍的修改之后还是有四个错误提示: 99,100,102,104都有一个illegal use of register 第一次编写这种复杂的程序真的要被逼疯了,求大佬指点一下寄存器到底哪里用错了。 代码如下: accume cs:codesg;ds:table,ss:stacksg,es:data data segment db '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982', '1983' db '1984', '1985', '1986', '1987', '1988', '1989', '1990', '1991', '1992' db '1993', '1994', '1995' dd 16, 22, 382, 1356, 2390, 8000, 16000, 24486, 50065, 97479, 140417, 197514 dd 345980, 590827, 803530, 1183000, 1843000, 2759000, 3753000, 4649000, 5937000 dw 3, 7, 9, 13, 28, 38, 130, 220, 476, 778, 1001, 1442, 2258, 2793, 4037, 5635, 8226 dw 11542, 14430, 15257, 17800 data ends table segment db 21 dup ('year summ ne ?? ') table ends stacksg segment dw 8 dup (0) stacksg ends codesg segment start: mov ax,table ;年份 mov ds,ax mov ax,data mov es,ax mov bx,0 mov cx,21 mov di,0 s0: mov bp,cx mov cx,4 mov si,0 s: mov dl,es:[di] mov byte ptr [bx+si],dl inc si inc di loop s add bx,16 mov cx,bp loop s0 mov bx,5 ;收入 mov cx,21 mov ax,stacksg ;建个栈 mov ss,ax mov sp,16 push di s1: mov bp,cx mov cx,4 mov si,0 s2: mov dl,es:[di] mov byte ptr [bx+si],dl inc si inc di loop s2 add bx,16 mov cx,bp loop s1 mov bx,0Ah ;雇员数 mov cx,21 push di s3: mov bp,cx mov cx,2 mov si,0 s4: mov dl,es:[di] mov byte ptr [bx+si],dl inc si inc di loop s4 add bx,16 mov cx,bp loop s3 mov bx,0dh ;人均收入 mov cx,21 pop di pop si s5: mov word ptr ax,es:[si] mov word ptr dx,es:[si+2] mov word ptr bp,es:[di] div word ptr bp mov [bx],ax add si,4 add di,2 add bx,16 loop s5 mov ax,4c00h int 21h codesg ends end start
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
JSON解析——net.sf.json.JSONObject
简介 在程序开发过程中,在参数传递,函数返回值等方面,越来越多的使用JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,同时也易于机器解析和生成、易于理解、阅读和撰写,而且Json采用完全独立于语言的文本格式,这使得Json成为理想的数据交换语言。 JSON建构于两种结构: “名称/值”对的集合(A Collection of name/va...
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
2019年还剩1天,我从外包公司离职了
这日子过的可真快啊,2019年还剩1天,外包公司干了不到3个月,我离职了
我一个37岁的程序员朋友
周末了,人一旦没有点事情干,心里就瞎想,而且跟几个老男人坐在一起,更容易瞎想,我自己现在也是 30 岁了,也是无时无刻在担心自己的职业生涯,担心丢掉工作没有收入,担心身体机能下降,担心突...
计算机网络的核心概念
这是《计算机网络》系列文章的第二篇文章 我们第一篇文章讲述了计算机网络的基本概念,互联网的基本名词,什么是协议以及几种接入网以及网络传输的物理媒体,那么本篇文章我们来探讨一下网络核心、交换网络、时延、丢包、吞吐量以及计算机网络的协议层次和网络攻击。 网络核心 网络的核心是由因特网端系统和链路构成的网状网络,下面这幅图正确的表达了这一点 那么在不同的 ISP 和本地以及家庭网络是如何交换信息的呢?...
python自动下载图片
近日闲来无事,总有一种无形的力量萦绕在朕身边,让朕精神涣散,昏昏欲睡。 可是,像朕这么有职业操守的社畜怎么能在上班期间睡瞌睡呢,我不禁陷入了沉思。。。。 突然旁边的IOS同事问:‘嘿,兄弟,我发现一个网站的图片很有意思啊,能不能帮我保存下来提升我的开发灵感?’ 作为一个坚强的社畜怎么能说自己不行呢,当时朕就不假思索的答应:‘oh, It’s simple. Wait for me for a ...
一名大专同学的四个问题
【前言】   收到一封来信,赶上各种事情拖了几日,利用今天要放下工作的时机,做个回复。   2020年到了,就以这一封信,作为开年标志吧。 【正文】   您好,我是一名现在有很多困惑的大二学生。有一些问题想要向您请教。   先说一下我的基本情况,高考失利,不想复读,来到广州一所大专读计算机应用技术专业。学校是偏艺术类的,计算机专业没有实验室更不用说工作室了。而且学校的学风也不好。但我很想在计算机领...
复习一周,京东+百度一面,不小心都拿了Offer
京东和百度一面都问了啥,面试官百般刁难,可惜我全会。
Java 14 都快来了,为什么还有这么多人固守Java 8?
从Java 9开始,Java版本的发布就让人眼花缭乱了。每隔6个月,都会冒出一个新版本出来,Java 10 , Java 11, Java 12, Java 13, 到2020年3月份,...
达摩院十大科技趋势发布:2020 非同小可!
【CSDN编者按】1月2日,阿里巴巴发布《达摩院2020十大科技趋势》,十大科技趋势分别是:人工智能从感知智能向认知智能演进;计算存储一体化突破AI算力瓶颈;工业互联网的超融合;机器间大规模协作成为可能;模块化降低芯片设计门槛;规模化生产级区块链应用将走入大众;量子计算进入攻坚期;新材料推动半导体器件革新;保护数据隐私的AI技术将加速落地;云成为IT技术创新的中心 。 新的画卷,正在徐徐展开。...
轻松搭建基于 SpringBoot + Vue 的 Web 商城应用
首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。Fun: Fun 是一个用于支持 Serverless 应用部署的工具,能帮助您便捷地管理函数计算、API ...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
Python+OpenCV实时图像处理
目录 1、导入库文件 2、设计GUI 3、调用摄像头 4、实时图像处理 4.1、阈值二值化 4.2、边缘检测 4.3、轮廓检测 4.4、高斯滤波 4.5、色彩转换 4.6、调节对比度 5、退出系统 初学OpenCV图像处理的小伙伴肯定对什么高斯函数、滤波处理、阈值二值化等特性非常头疼,这里给各位分享一个小项目,可通过摄像头实时动态查看各类图像处理的特点,也可对各位调参、测试...
2020年一线城市程序员工资大调查
人才需求 一线城市共发布岗位38115个,招聘120827人。 其中 beijing 22805 guangzhou 25081 shanghai 39614 shenzhen 33327 工资分布 2020年中国一线城市程序员的平均工资为16285元,工资中位数为14583元,其中95%的人的工资位于5000到20000元之间。 和往年数据比较: yea...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
害怕面试被问HashMap?这一篇就搞定了!
声明:本文以jdk1.8为主! 搞定HashMap 作为一个Java从业者,面试的时候肯定会被问到过HashMap,因为对于HashMap来说,可以说是Java集合中的精髓了,如果你觉得自己对它掌握的还不够好,我想今天这篇文章会非常适合你,至少,看了今天这篇文章,以后不怕面试被问HashMap了 其实在我学习HashMap的过程中,我个人觉得HashMap还是挺复杂的,如果真的想把它搞得明明白...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
程序员如何通过造轮子走向人生巅峰?
前言:你所做的事情,也许暂时看不到成果。但不要灰心,你不是没有成长,而是在扎根。 程序员圈经常流行的一句话:“不要重复造轮子”。在计算机领域,我们将封装好的组件、库,叫做轮子。因为它可以拿来直接用,直接塞进我们的项目中,就能实现对应的功能。 有些同学会问,人家都已经做好了,你再来重新弄一遍,有什么意义?这不是在浪费时间吗。 殊不知,造轮子是一种学习方式,能快速进步,造得好,是自己超强能力的表...
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试一个ArrayList我都能跟面试官扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Idea 中最常用的10款插件(提高开发效率),一定要学会使用!
学习使用一些插件,可以提高开发效率。对于我们开发人员很有帮助。这篇博客介绍了开发中使用的插件。
立即提问