묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨독하게 시작하는 C 프로그래밍
scanf_s 함수 질문있습니다!
scanf_s("%4c", szBuffer, _countof(szBuffer));이부분 예제에서는 왜 &szBuffer 이렇게 참조형식으로 넘겨주지 않은건가요 ??
-
해결됨독하게 시작하는 C 프로그래밍
Hello World 이후 예제구문 관련
VS studio에서 Hello World 처음 작성하고, 문자 입/출력 강의에 예제 작성하려고 하는데 어느 경로를 통해서 프로젝트 추가해서 작성가능한지에 대해 알려주셨으면 합니다.찾다가 파일 > 추가 > 새 프로젝트 추가 경로를 통해서 추가는 했습니다만요.. 추가로 새로운 프로젝트는 삭제하고 싶은데 삭제가 안되고, 다른 프로젝트에 코드 작성하려니까 안되네요.. 해결방법이 뭘까요? 감사합니다.
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
수강기한
이벤트를 통해 수강기한을 무제한으로 연장 할 수 있다고 하셨는데, 어디서 해당 이벤트를 확인 할 수 있을까요?
-
해결됨독하게 시작하는 C 프로그래밍
가독성이 떨어지는 코드 or 바보같은코드 고민
1 2 3 4 510 9 8 7 611 12 13 14 1520 19 18 17 1621 22 23 24 25 구현 문제에서 #include <stdio.h>int main(){ int array[5][5] = { 0 }; int cnt = 0; for (int i = 0; i < 5; ++i) { if (i != 0 && i % 2 != 0) cnt = cnt + 6; else if (i!= 0 && i % 2 != 1) cnt = cnt + 4; for (int j = 0; j < 5; ++j) { if (i % 2 == 0) { array[i][j] = ++cnt; printf("%d ", array[i][j]); } else { array[i][j] = --cnt; printf("%d ", array[i][j]); } } putchar('\n'); } return 0;} 이렇게 코드를 짜봤는데 가독성도 떨어지고 제 생각에 좋은 코드가 아니라는 생각이 듭니다 하지만 이런 방법아니면 생각이 잘 안날때 어떤식으로 사고해야될까요? 효율적인 코드가 나올때까지 고민을 멈추면안된다거나일단 구현은 되었으니 넘어가고 좋은 해결법을 본다거나
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
CPU 파이프라인 동작 코드 분석 중 의문점 질문 드립니다.
안녕하세요. 파이프라인 동작 코드 분석 중 의문점이 생겨 질문 드립니다.다음의 다이어그램에서 보면, RegDST에 대한 명령이 ID 스텝에서 디코딩 된 후, EX 스텝까지 전달이 되어서 rt/rd중 선택하는 MUX를 통해 결정비트로 동작하는 것처럼 보입니다. 하지만, 코드 상에서는 ID step에서 해당 동작이 구현된 것 같습니다. 이 후 D FF을 통해 EX스텝으로 해당 비트가 전달되는 것은 동일합니다.혹시, EX가 아닌 ID 스텝에서 해당 기능을 구현하신 이유가 있을까요?질문이 많은데 늘 친절하게 답변주셔서 감사합니다!
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
시뮬레이션 오류 질문
논리 합성은 문제 없는데 시뮬레이션만 돌리면 이런 오류가 뜹니다. 왜 이러는 걸까요?
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
hamming code 과제 질문
해당 코드에서 보면 decoder_ham은 var5가 parity bit1인 것처럼 코딩이 되어 있습니다.실제로 Hamming Decoder 모듈에서는 var1이 p1인 것처럼 코딩이 되어 있구요. 근데, d1을 선언할 때는 갑자기 var1자리에 var5가 입력됩니다.이상하게도 결괏값은 잘 나오는 거 같구요..제가 이해 못하는 무언가 있는건가요?
-
해결됨독하게 시작하는 C 프로그래밍
산술연산자 강의 3분39초경 단축키가 무엇인가요?
addSample.c 소스파일과 tmpResult.c 소스파일을 비교해주실때 창을 넘어가시는데요. 단축키 써서 이동하시는거 같은데 어떻게 하신걸까요? 뭔가 멋져보입니다.
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
DMA 컨트롤러
DMA 컨트롤러가 메모리를 직접 접근해서 사용할때, CPU가 사용하고 있는 메모리를 건드릴 수도 있나요? 2 .반대로도 가능한지 궁금합니다. ( CPU가 사용하고 있는 메모리를 DMA 컨틀롤러가 접근할 수 있는지 )
-
해결됨독하게 시작하는 C 프로그래밍
scaf_s 함수 사용시 경고 표시
강사님 컴퓨터에서는 scanf_s("%4c", szBuffer, _countof(szBuffer));여기에 밑줄이 안생깁니다.하지만 제 컴퓨터 비쥬얼스튜디오 에서는 밑줄이 생기면서 경고가 뜨네요 (shift F5 눌러서 실행 하면 실행은 잘 됩니다.) 경고는 C6328입니다. 크기 불일치: 'unsigned __int64'이(가) Param(3)으로 전달되었습니다. 다음 호출에는 'unsigned int'이(가) 필요합니다. 'scanf_s'. 그래서 경고를 구글링 해보니까 countof 명령어? 의 데이터 크기가 안맞는거 같은데강사님의 설명 듣고싶습니다.
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
DRAM ctrl 과제 질문
안녕하세요. 현재 DRAM ctrl 과제 진행 중테스트밴치를 통해 웨이브폼을 확인하는 중입니다.혹시 여기서 cnt값을 추가해서 확인하고 싶으면, 어떻게 해야 할까요? cnt는 DRAM cell 내부에서 조건에 따라 카운팅을 해줘tRCD,tWLC등의 조건을 만족하는지 확인하는 파라미터입니다. 그리고 추가적으로 웨이브폼 확인 중 의문이 생기는 부분을 확인하여 질문 드립니다.해당 부분은 첫 번째 WR신호를 마친후 o_ack가 high로 변하는 타이밍입니다.해당 타이밍에 저는 curr_row와 next_row의 addr값이 서로 다르다고 생각하였습니다.그래서 precharge로 넘어가야 할 것이라 예상했는데, 실제로는 같은 row로 인식하여 한번 더 쓰기를 진행했습니다. 다만 이번엔 dq핀에서 40이 아닌 50으로 출력값이 나왔습니다.... 혹시 왜 이렇게 동작했는지 알려주실 수 있을까요..감사합니다
-
미해결리눅스 커널의 구조와 원리: 프로세스 [저자 직강 1부-4]
리눅스-프로세스 강의 교재 자료
안녕하세요. 강사님 강의 애청자입니다. 리눅스-프로세스 강의 자료는 없는지 문의드립니다. 강의상 자료에도 찾아보기가 어렵네요ㅠㅠ
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
과제4 hamming code 질문
hamming encoder의 input data는 [16:1]인데 output은 [21:1]이 아닌 [1:21]으로 한 이유가 있을까요?verilog에서 vector를 선언할 때에 [msb : lsb] , [lsb : msb] 두가지 방식을 혼용해서 쓰지 않는 것으로 알고 있었는데testbench에도 이를 위해서 reverse 시키는 부분이 존재하여 hamming code logic의 특징인지 궁금하여 문의드립니다.
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
bank addr 질문
bank 그룹안에 8개의 bank가 있는데 왜 BA는 2비트로 표현하는 것일까요? 3비트가 있어야하지 않나요?
-
해결됨독하게 시작하는 C 프로그래밍
fgets() 함수 사용관련
리눅스에서는 fgets() 함수를 쓴다고 하는데, 제 컴퓨터랑 강사님 컴퓨터는 Windows 환경인데 어떻게 fget()함수가 동작하나요?
-
해결됨독하게 시작하는 C 프로그래밍
문자열 입출력 코드설명에서
char szName[32] = {0} ;이렇게 변수를 만들면1바이트의 메모리가 32개가 할당된다고 이해가 되는데이게 맞나요?
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
address bit수에 대해서 질문 드립니다.
Direct Mapped chache메모리 설계하기 스텝에서주어진 조건에 맞춰서 address 와 data bit수를 정하는 부분에서 막혔습니다.제가 이해한게 맞는지 확인 부탁드립니다.우선 메모리 사이즈란 DRAM의 사이즈로 이해했습니다.그래서 디램의 사이즈가 256B이므로 하나의 메모리가 4B로 처리된다면, 디램은 총 64개의 메모리를 저장할 수 있는 것으로 생각했습니다. ( Blocks = 64 ) cache size는 SRAM 즉, 캐시메모리의 사이즈로 이해했습니다. 그렇다면, 캐시메모리에서 저장가능한 갯수는 하나의 메모리가 4B를 담고 있으므로 총 4개 ( 4sets)가 됩니다. 데이터를 주고 받는 것에 필요한 라인을 설정해야 하는데, 데이터라인과 어드레스 라인은 서로 다른 것으로 이해했습니다.어드레스는 상위비트부터 순서대로 tag,index,byte offset으로 분류됩니다.tag란 DRAM의 어느 곳에서 온 메모리인지를 담고 있는 데이터 입니다. 캐시메모리는 총 4개의 데이터를 저장 가능하며, 하나의 cache line당 16개의 데이터를 맵핑할 수 있습니다.따라서 tag에는 총 4개의 비트가 필요합니다.index는 4개의 캐시라인에 대한 주소를 의미하므로, 2개의 비트가 필요합니다.마지막으로 byte offset은 블록 사이즈가 4바이트이므로, 2개의 비트를 사용해야 할 것으로 보입니다. 하여 어드레스에 해당하는 비트 수가 총 8개여야 할 것 같습니다. 근데 어드레스로 보이는 코드의 비트수가 6개여서 질문드립니다. 혹시 byte-offset은 고려하지 않은채로 설계가 된건가요?
-
해결됨개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제
보수랑 플래그 관련해서 질문드립니다
다른 분들 질문을 보고 답변을 보았는데요https://www.inflearn.com/community/questions/813583/%EC%9D%8C%EC%88%98-%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98-%ED%91%9C%EC%8B%9C%EC%97%90-%EA%B4%80%ED%95%98%EC%97%AC위의 답변을 보면 보수 표현을 하면 덧셈 뺄셈 연산이 더 단순하다고 되어 있는데요 사진 처럼 보수를 사용하지 않고 어짜피 플래그가 있다면 같은자리끼리 계산하기가 더 편할 거 같아서요2의 보수를 사용하여 1 1 1 + 0 0 1 을 보고 바로 0이 된다고 계산이 쉽지 않을 것 같아서요
-
해결됨독하게 시작하는 C 프로그래밍
Stack Frame과 메모리 질문
안녕하세요?강의에서는 메모리 상에서 szBuffer와 nData가 바로 인접해서 서로에게 영향을 주는 상황이 나온 것으로 이해했습니다.그런데 제가 변수가 메모리에 어떻게 저장되는지 궁금하여 이전에 간단히 #include <stdio.h>int main(void){ int x = 16; int y = 8; int z = 4; return 0;}로 두고 메모리를 따라가 봤더니 다음과 같은 결과가 나왔습니다.0x000000886A2FFB04 10 00 00 00 ....0x000000886A2FFB08 b4 05 63 2e ?.c.0x000000886A2FFB0C fc 7f 00 00 ?...0x000000886A2FFB10 c8 d2 29 d8 ??)?0x000000886A2FFB14 bc d9 00 00 ??..0x000000886A2FFB18 02 00 00 00 ....0x000000886A2FFB1C 00 00 00 00 ....0x000000886A2FFB20 00 00 00 00 ....0x000000886A2FFB24 08 00 00 00 ....0x000000886A2FFB28 16 20 60 2e . `.0x000000886A2FFB2C fc 7f 00 00 ?...0x000000886A2FFB30 00 00 00 00 ....0x000000886A2FFB34 88 00 00 00 ?...0x000000886A2FFB38 00 00 00 00 ....0x000000886A2FFB3C 00 00 00 00 ....0x000000886A2FFB40 00 82 68 b3 .?h?0x000000886A2FFB44 04 00 00 00 ....((볼드체 + 기울임이 각각 x, y, z입니다)여기서 질문이 두 가지 있습니다.보안 설정에서 아무것도 바꾸지 않았는데 변수들이 모두 메모리 주소를 32씩 띄워서 저장되고 있습니다. int는 4byte이니 원칙적으로는 메모리 주소를 4씩만 띄워서 저장해도 될 것 같은데 (강의상에서도 szBuffer와 nData가 붙어서 저장된 것처럼) 왜 이런 것일까요?변수 x, y, z는 자동변수이므로 현재 저장된 메모리 공간은stack frame으로 이해했습니다. 강의에서 stack frame의 위쪽 공간일수록 메모리의 0번지에 가까워진다고 하셨는데 왜 x - > y -> z로 갈수록 메모리 주소가 증가하는 걸까요? 가장 먼저 정의된 변수 x가 stack의 가장 밑에 저장되고 그 위에 y, z가 정의되었다고 한다면 z로 갈수록 메모리 주소가 0번지에 가까워져야 하지 않을까... 생각을 하였습니다. 감사합니다.
-
해결됨디지털 회로설계 실무 : Computer Architecture 와 SoC 프로토콜 Digital IP 설계하기
TPSRAM,DPSRAM TB코드 문법 질문
begin: tpsram_write @(posedge clk); for (int i=0;i<DEPTH;i++) begin we <= 1; wa <= i; wd <= 'h10+i; @(posedge clk);//필요한 이유 end we <= 0; @(posedge clk); end@(posedge clk); for문 마지막과 begin문 마지막에 필요한 이유가 뭔가요?주석 처리 후 시뮬레이션을 돌려보니 for문에 맞게 wa값과 wd값이 업데이트가 되지 않았습니다. 혹시 system verilog에서 for문과 begin문을 작성하면 @(posedge clk)을 해주는 것이 규칙인가요?