'2013/03'에 해당되는 글 3건

  1. 2013.03.13 OOM Killer와 LMK 잠깐 살펴보기
  2. 2013.03.05 MIPS pseudo instruction
  3. 2013.03.04 UBIFS overview

Memory 관리에 대해서 이것저것 살펴보다가 OOM Killer에 대해 알게 되었고, 그에 대한 내용을 정리해보았다.  주로 인터넷에서 긁은 거지만...

마찬가지로 회사 기밀은 전혀 없음... ㅋㅋ

 

oom killer.pdf

Posted by 강군님
TAG LMK, OOM

댓글을 달아 주세요

MIPS pseudo instruction

Assembly 2013. 3. 5. 14:55

MIPS assembly debugging 중, MIPS instruction set을 아무리 뒤져도 찾을 수 없는 instruction을 발견했다.  대충 코드는 아래와 같다.

                if (foo() != expected)
  4008cc:       8fc20028        lw      v0,40(s8)
  4008d0:       0040c821        move    t9,v0
  4008d4:       0320f809        jalr    t9
  4008d8:       00000000        nop

여기서 move라는 instruction이 문제가 되었는데, 이러한 instruction들을 pseduo instruction이라고 하며 real instruction은 아니지만 assembler가 다른 유효한 instruction으로 변환시켜주는 것을 말한다.  아래의 표는 translate map이며, 출처는 MIPS architecture - Wikipedia - 이다.

Pseudo instructions

These instructions are accepted by the MIPS assembler, although they are not real instructions within the MIPS instruction set. Instead, the assembler translates them into sequences of real instructions.

Name instruction syntax Real instruction translation meaning
Move move $rt,$rs addi $rt,$rs,0 R[rt]=R[rs]
Clear clear $rt add $rt,$zero,$zero R[rt]=0
Not not $rt, $rs nor $rt, $rs, $zero R[rt]=~R[rs]
Load Address la $rd, LabelAddr lui $rd, LabelAddr[31:16]; ori $rd,$rd, LabelAddr[15:0] $rd = Label Address
Load Immediate li $rd, IMMED[31:0] lui $rd, IMMED[31:16]; ori $rd,$rd, IMMED[15:0] $rd = 32 bit Immediate value
Branch unconditionally b Label beq $zero,$zero,Label PC=Label
Branch and link bal Label bgezal $zero,Label R[31]=PC+8; PC=Label
Branch if greater than bgt $rs,$rt,Label slt $at,$rt,$rs; bne $at,$zero,Label if(R[rs]>R[rt]) PC=Label
Branch if less than blt $rs,$rt,Label slt $at,$rs,$rt; bne $at,$zero,Label if(R[rs]<R[rt]) PC=Label
Branch if greater than or equal bge $rs,$rt,Label slt $at,$rs,$rt; beq $at,$zero,Label if(R[rs]>=R[rt]) PC=Label
Branch if less than or equal ble $rs,$rt,Label slt $at,$rt,$rs; beq $at,$zero,Label if(R[rs]<=R[rt]) PC=Label
Branch if greater than unsigned bgtu $rs,$rt,Label if(R[rs]>R[rt]) PC=Label
Branch if greater than zero bgtz $rs,Label if(R[rs]>0) PC=Label
Branch if equal to zero beqz $rs,Label if(R[rs]==0) PC=Label
Multiplies and returns only first 32 bits mul $d, $s, $t mult $s, $t; mflo $d $d = $s * $t
Divides and returns quotient div $d, $s, $t div $s, $t; mflo $d $d = $s / $t
Divides and returns remainder rem $d, $s, $t div $s, $t; mfhi $d $d = $s % $t

Posted by 강군님

댓글을 달아 주세요

UBIFS overview

Linux 2013. 3. 4. 10:43

회사 2013/2/25 진행했던 UBI/UBIFS overview 세미나.  다음 세미나에서는 Garbage collection에 대한 조사가 더 필요하다.  회사의 중요한 내용은 전혀 없음 -.-

UBIFS.pdf

Posted by 강군님
TAG UBI, UBIFS

댓글을 달아 주세요