CVE-2019-5782 (Incorrect optimization assumptions in V8)
1-day
Background Typer in Turbofan JavaScript의 dynamic type system은 사용자에게는 편의를 제공하지만, JS 엔진의 입장에서는 코드와 메모리 관리를 매우 까다롭게 합니다. 예를 들어, a + b라는 아주 간단한 덧셈 연산도 a와 b의 type에 따라 연산 결과의 type이 달라집니다. JIT 컴파일러는 피연산자와 연산 결과의 type에 대해 가능한 모든 경우를 고려하여 어떻게 처리할지 준비해 두어야 하는데, 이는 매우 비효율적인 작업일 것입니다. V8에서는 type speculation을 통해 이 문제를 해결합니다. V8의 JIT 컴파일러인 Turbofan은 함수가 호출될 때 연산 과정에서 사용되는 type 정보를 기록해 두었다가, runtime에 그 정보를 활용하..
CVE-2020-6418 (Incorrect side effect modelling for JSCreate)
1-day
Background Map inference in v8 V8에서 map inference는 최적화 과정에서 object의 map, 즉 type을 추론하는 작업입니다. Object의 map은 runtime에 바뀔 수 있습니다. 예를 들어 다음과 같은 상황을 생각해볼 수 있습니다. [1, 2, 3]은 small integer들의 배열이므로, a의 map은 PACKED_SMI_ELEMENTS입니다. a[0]의 값을 1.1로 바꾸면 a는 더 이상 small integer들의 배열이 아니게 되고, 따라서 map도 바뀌어야 합니다. 이 경우에는 double형 상수들의 배열이므로 a의 새로운 map은 PACKED_DOUBLE_ELEMENTS가 됩니다. /* src/compiler/map-inference.h */ /..
CVE-2018-16069 (Floating-point precision errors in Swiftshader blitting)
1-day
Background Precision error 프로그래밍 언어에서 limited precision arithmetic operation을 수행할 때 precision error가 발생할 수 있습니다. 실존하는 수는 무한한데 컴퓨터는 제한된 공간에 2진수 형식으로 수를 저장하기 때문에, 실제 프로그래머가 의도한 값과 컴퓨터에 저장되는 값이 달라지는 현상입니다. 대표적인 precision error에는 integer overflow가 있습니다. 4바이트 크기의 int형 변수는 2 ** 32가지의 정수만 표현할 수 있는데, 표현 가능한 범위를 넘어가게 되면 overflow가 발생하여 실제 의도한 값과 다른 값이 저장됩니다. 이 글의 버그는 floating-point arithmetic operation에서의..
[MIT 6.S081 Fall 2020] Lab: traps
xv6
https://pdos.csail.mit.edu/6.S081/2020/labs/traps.htmlRead in GithubRISC-V assembly (easy)user/call.c가 컴파일되어 생성되는 user/call.asm을 보고 몇 가지의 질문에 답하는 실습이다.#include "kernel/param.h"#include "kernel/types.h"#include "kernel/stat.h"#include "user/user.h"int g(int x) { return x+3;}int f(int x) { return g(x);}void main(void) { printf("%d %d\n", f(8)+1, 13); exit(0);}Q. Which registers contain argumen..
VSCode C/C++ auto formatting (Ctrl + K + F) Google 스타일로 설정
etc
C/C++ 확장이 설치되어 있어야 합니다. VSCode 설정(Ctrl + ,)에서 Clang_format_style 검색 Clang_format_style에 { IndentWidth: 4, ColumnLimit: 0 } 입력 Clang_format_fallback Style에 Google 입력 (기본적으로 Google 스타일에서 들여쓰기 4칸, 한 줄 최대 글자 수 제한 없음으로 설정하겠다는 의미)
h0meb0dy_
'분류 전체보기' 카테고리의 글 목록 (32 Page)