Skip to content

Conjunto de Instruções

Carrega Constante

LUI Especificação: Base RV32I

Load Upper Immediate (Carregar Superior Imediato).

Carrega registradores com valores constantes de 32 bits. LUI guarda o valor imediato dos 20 bits mais significativos da instrução nos 20 bits mais significativos do registrador de destino rd, preenchendo os 12 bits menos significativos com zero.

Formato

asm
lui rd, imm

Implementação

c
x[rd] = imm[31:12] << 12

Sintaxe

Tabela LUI - sintaxe da instrução LUI.
Tipo31-1211-76-0
Uimm[31:12]rd0110111

AUIPC Especificação: Base RV32I

Add Upper Immediate (Adiciona Superior Imediato).

Desloca o valor do imediato da instrução, que consiste nos 20 bits mais significativos, 12 bits à esquerda, preenchendo os 12 bits menos significativos com zero, e o adiciona ao PC. O resultado é então escrito no registrador de destino rd.

Formato

asm
auipc rd, imm

Implementação

c
x[rd] = pc + sext(imm[31:12] << 12)

Sintaxe

Tabela AUIPC - Tabela com sintaxe da instrução AUIPC.
Tipo31-1211-76-0
Uimm[31:12]rd0010111

Lógica Aritmética

ADD Especificação: Base RV32I

Add (Soma).

Soma o valor armazenado no registrador rs1 com o valor armazenado no registrador rs2 e armazena o resultado no registrador de destino rd. Em caso de overflow, ele é ignorado.

Formato

asm
add rd, rs1, rs2

Implementação

c
x[rd] = x[rs1] + x[rs2]

Sintaxe

Tabela ADD - Tabela com sintaxe da instrução ADD.
Tipo31-2524-2019-1514-1211-76-0
R0000000rs2rs1000rdOP

ADDI Especificação: Base RV32I

Add Immediate (Soma Imediato).

Soma o valor armazenado no registrador rs1 com o sinal estendido do imediato e armazena o resultado no registrador de destino rd. Em caso de overflow, ele é ignorado.

Formato

asm
addi rd, rs1, immediate

Implementação

c
x[rd] = x[rs1] + sext(immediate)

Sintaxe

Tabela ADDI - Tabela com sintaxe da instrução ADDI.
Tipo31-2019-1514-1211-76-0
Iimm[11:0]rs1000rdOP-IMM

SUB Especificação: Base RV32I

Subtract (Subtrai).

Subtrai o valor armazenado no registrador rs2 do valor armazenado no registrador rs1 e armazena o resultado no registrador de destino rd. Em caso de overflow, ele é ignorado.

Formato

asm
sub rd, rs1, rs2

Implementação

c
x[rd] = x[rs1] - x[rs2]

Sintaxe

Tabela SUB - Tabela com sintaxe da instrução SUB.
Tipo31-2524-2019-1514-1211-76-0
R0100000rs2rs1000rdOP

MUL Especificação: extensão “M” RISC-V

Multiply (Multiplica).

Multiplica o valor armazenado no registrador rs1 pelo valor armazenado no registrador rs2 e armazena o resultado no registrador de destino rd. Em caso de overflow, ele é ignorado.

Formato

asm
mul rd, rs1, rs2

Implementação

c
x[rd] = x[rs1] × x[rs2]

Sintaxe

Tabela MUL - Tabela com sintaxe da instrução MUL.
Tipo31-2524-2019-1514-1211-76-0
R0000001rs2rs1000rdOP

MULH Especificação: extensão “M” RISC-V

Multiply High (Multiplica Superior).

Multiplica o valor armazenado no registrador rs1 pelo valor armazenado no registrador rs2 considerando que são números de complemento de dois e armazena a metade superior do produto no registrador de destino rd.

Formato

asm
mulh rd, rs1, rs2

Implementação

c
x[rd] = (x[rs1] × x[rs2]) >> XLEN

Sintaxe

Tabela MULH - Tabela com sintaxe da instrução MULH.
Tipo31-2524-2019-1514-1211-76-0
R0000001rs2rs1001rdOP

MULHSU Especificação: extensão “M” RISC-V

Multiply High Signed and Unsigned (Multiplica Superior com Sinal e Sem Sinal).

Multiplica o valor armazenado no registrador rs1 pelo valor armazenado no registrador rs2, considerando que o valor em rs1 é de complemento de dois e que o valor em rs2 é um número sem sinal, armazenando a metade superior do produto no registrador de destino rd.

Formato

asm
mulhsu rd, rs1, rs2

Implementação

c
x[rd] = (x[rs1] * x[rs2]) >> XLEN

Sintaxe

Tabela MULHSU - Tabela com sintaxe da instrução MULHSU.
Tipo31-2524-2019-1514-1211-76-0
R0000001rs2rs1010rdOP

MULHU Especificação: extensão “M” RISC-V

Multiply High Unsigned (Multiplica Superior Sem Sinal).

Multiplica o valor armazenado no registrador rs1 pelo valor armazenado no registrador rs2, considerando que ambos são números sem sinal, e armazena a metade superior do produto no registrador de destino rd.

Formato

asm
mulhu rd, rs1, rs2

Implementação

c
x[rd] = (x[rs1] × x[rs2]) >> XLEN

Sintaxe

Tabela MULHU - Tabela com sintaxe da instrução MULHU.
Tipo31-2524-2019-1514-1211-76-0
R0000001rs2rs1011rdOP

DIV Especificação: extensão “M” RISC-V

Divide (Divide).

Divide o valor armazenado no registrador rs1 pelo valor armazenado no registrador rs2, considerando que ambos são números de complemento de dois, arredondando para zero, e armazena o quociente no registrador de destino rd.

Formato

asm
div rd, rs1, rs2

Implementação

c
x[rd] = x[rs1] ÷ x[rs2]

Sintaxe

Tabela DIV - Tabela com sintaxe da instrução DIV.
Tipo31-2524-2019-1514-1211-76-0
R0000001rs2rs1100rdOP

DIVU Especificação: extensão “M” RISC-V

Divide Unsigned (Divide Sem Sinal).

Divide o valor armazenado no registrador rs1 pelo valor armazenado no registrador rs2, considerando que são números sem sinal, arredondando para zero, e armazena o quociente no registrador de destino rd.

Formato

asm
div rd, rs1, rs2

Implementação

c
x[rd] = x[rs1] ÷ x[rs2]

Sintaxe

Tabela DIVU - Tabela com sintaxe da instrução DIVU.
Tipo31-2524-2019-1514-1211-76-0
R0000001rs2rs1101rdOP

REM Especificação: extensão “M” RISC-V

Remainder (Resto).

Divide o valor armazenado no registrador rs1 pelo valor armazenado no registrador rs2, considerando que são números de complemento de dois, arredondando para zero, e armazena o resto no registrador de destino rd.

Formato

asm
rem rd, rs1, rs2

Implementação

c
x[rd] = x[rs1] % x[rs2]

Sintaxe

Tabela REM - Tabela com sintaxe da instrução REM.
Tipo31-2524-2019-1514-1211-76-0
R0000001rs2rs1110rdOP

REMU Especificação: extensão “M” RISC-V

Remainder Unsigned (Resto Sem Sinal).

Divide o valor armazenado no registrador rs1 pelo valor armazenado no registrador rs2, considerando que são números sem sinal, arredondando para zero, e armazena o resto no registrador de destino rd.

Formato

asm
rem rd, rs1, rs2

Implementação

c
x[rd] = x[rs1] % x[rs2]

Sintaxe

Tabela REMU - Tabela com sintaxe da instrução REMU.
Tipo31-2524-2019-1514-1211-76-0
R0000001rs2rs1111rdOP

Lógicas Booleana

XOR Especificação: Base RV32I

Exclusive OR (OU Exclusivo).

Realiza a operação lógica XOR,bit a_bit_, entre os valores armazenados nos registradores rs1 e rs2 e armazena o resultado no registrador de destino rd.

Formato

asm
xor rd, rs1, rs2

Implementação

c
x[rd] = x[rs1] ˆ x[rs2]

Sintaxe

Tabela XOR - Tabela com sintaxe da instrução XOR.
Tipo31-2524-2019-1514-1211-76-0
R0000000rs2rs1100rdOP

XORI Especificação: Base RV32I

Exclusive OR Immediate (OU Exclusivo Imediato).

Realiza a operação lógica XOR,bit a_bit_, entre o valor armazenado no registrador rs1 e o imediato com sinal estendido e armazena o resultado no registrador de destino rd.

Formato

asm
xori rd, rs1, immediate

Implementação

c
x[rd] = x[rs1] ˆ sext(immediate)

Sintaxe

Tabela XORI - Tabela com sintaxe da instrução XORI.
Tipo31-2019-1514-1211-76-0
Iimm[11:0]rs1100rdOP-IMM

OR Especificação: Base RV32I

OR (OU).

Realiza a operação lógica OR,bit a_bit_, entre os valores armazenados nos registradores rs1 e rs2 e armazena o resultado no registrador de destino rd.

Formato

asm
or rd, rs1, rs2

Implementação

c
x[rd] = x[rs1] | x[rs2]

Sintaxe

Tabela OR - Tabela com sintaxe da instrução OR.
Tipo31-2524-2019-1514-1211-76-0
R0000000rs2rs1110rdOP

ORI Especificação: Base RV32I

OR Immediate (OU Imediato).

Realiza a operação lógica OR,bit a_bit_, entre o valor armazenado no registrador rs1 e o imediato com sinal estendido e armazena o resultado no registrador de destino rd.

Formato

asm
ori rd, rs1, immediate

Implementação

c
x[rd] = x[rs1] | sext(immediate)

Sintaxe

Tabela ORI - Tabela com sintaxe da instrução ORI.
Tipo31-2019-1514-1211-76-0
Iimm[11:0]rs1110rdOP-IMM

AND Especificação: Base RV32I

AND (E).

Realiza a operação lógica AND,bit a_bit_, entre os valores armazenados nos registradores rs1 e rs2 e armazena o resultado no registrador de destino rd.

Formato

asm
and rd, rs1, rs2

Implementação

c
x[rd] = x[rs1] & x[rs2]

Sintaxe

Tabela AND - Tabela com sintaxe da instrução AND.
Tipo31-2524-2019-1514-1211-76-0
R0000000rs2rs1111rdOP

ANDI Especificação: Base RV32I

AND Immediate (E Imediato).

Realiza a operação lógica OR,bit a_bit_, entre o valor armazenado no registrador rs1 e o imediato com sinal estendido e armazena o resultado no registrador de destino rd.

Formato

asm
andi rd, rs1, immediate

Implementação

c
x[rd] = x[rs1] & sext(immediate)

Sintaxe

Tabela ANDI - Tabela com sintaxe da instrução ANDI.
Tipo31-2019-1514-1211-76-0
Iimm[11:0]rs1111rdOP-IMM

Operação de Deslocamento

SLL Especificação: Base RV32I

Shift Left Logical (Desloca à Esquerda Lógico).

Desloca o valor armazenado no registrador rs1 à esquerda pelo número de posições indicado pelos 5 bits menos significativos do valor armazenado no registrador rs2. Os bits remanescentes de rs2 são ignorados. Os bits vazios de rs1 são preenchidos com zeros. O resultado é escrito no registrador de destino rd.

Formato

asm
sll rd, rs1, rs2

Implementação

c
x[rd] = x[rs1] << x[rs2]

Sintaxe

Tabela SLL - Tabela com sintaxe da instrução SLL.
Tipo31-2524-2019-1514-1211-76-0
R0000000rs2rs1001rdOP

SLLI Especificação: Base RV32I

Shift Left Logical Immediate (Desloca à Esquerda Lógico Imediato).

Desloca o valor armazenado no registrador rs1 à esquerda pelo número de posições indicado pelo shamt. Os bits vazios de rs1 são preenchidos com zeros. O resultado é escrito no registrador de destino rd. Caso se decida atualizar o processador para uma arquitetura de 64 bits, esta instrução terá sua sintaxe alterada (o shamt e o funct7 passam a ter 6 bits cada).

Formato

asm
slli rd, rs1, shamt

Implementação

c
x[rd] = x[rs1] << shamt

Sintaxe

Tabela SLLI - Tabela com sintaxe da instrução SLLI.
Tipo31-2524-2019-1514-1211-76-0
I0000000shamtrs1001rdOP-IMM

SRL Especificação: Base RV32I

Shift Right Logical (Desloca à Direita Lógico).

Desloca o valor armazenado no registrador rs1 à direita pelo número de posições indicado pelos 5 bits menos significativos do valor armazenado no registrador rs2. Os bits remanescentes de rs2 são ignorados. Os bits vazios de rs1 são preenchidos com zeros. O resultado é escrito no registrador de destino rd.

Formato

asm
srl rd, rs1, rs2

Implementação

c
x[rd] = x[rs1] >> x[rs2]

Sintaxe

Tabela SRL - Tabela com sintaxe da instrução SRL.
Tipo31-2524-2019-1514-1211-76-0
R0000000rs2rs1101rdOP

SRLI Especificação: Base RV32I

Shift Right Logical Immediate (Desloca à Direita Lógico Imediato).

Desloca o valor armazenado no registrador rs1 à direita pelo número de posições indicado pelo shamt. Os bits vazios de rs1 são preenchidos com zeros. O resultado é escrito no registrador de destino rd. Caso se decida atualizar o processador para uma arquitetura de 64 bits, esta instrução terá sua sintaxe alterada (o shamt e o funct7 passam a ter 6 bits cada).

Formato

asm
srli rd, rs1, shamt

Implementação

c
x[rd] = x[rs1] >>shamt

Sintaxe

Tabela SRLI - Tabela com sintaxe da instrução SRLI.
Tipo31-2524-2019-1514-1211-76-0
I0000000shamtrs1101rdOP-IMM

SRA Especificação: Base RV32I

Shift Right Arithmetic (Desloca à Direita Aritmético).

Desloca o valor armazenado no registrador rs1 à direita pelo número de posições indicado pelos 5 bits menos significativos do valor armazenado no registrador rs2. Os bits remanescentes de rs2 são ignorados. Os bits vazios de rs1 são preenchidos com cópias do_bit_ mais significativo de rs1. O resultado é escrito no registrador de destino rd.

Formato

asm
sra rd, rs1, rs2

Implementação

c
x[rd] = x[rs1] >> x[rs2]

Sintaxe

Tabela SRA - Tabela com sintaxe da instrução SRA.
Tipo31-2524-2019-1514-1211-76-0
R0100000rs2rs1101rdOP

SRAI Especificação: Base RV32I

Shift Right Arithmetic Immediate (Desloca à Direita Aritmético Imediato).

Desloca o valor armazenado no registrador rs1 à direita pelo número de posições indicado pelo shamt. Os bits vazios de rs1 são preenchidos com cópias do_bit_ mais significativo de rs1. O resultado é escrito no registrador de destino rd. Caso se decida atualizar o processador para uma arquitetura de 64 bits, esta instrução terá sua sintaxe alterada (o shamt e o funct7 passam a ter 6 bits cada).

Formato

asm
srai rd, rs1, shamt

Implementação

c
x[rd] = x[rs1] >> shamt

Sintaxe

Tabela SRAI - Tabela com sintaxe da instrução SRAI.
Tipo31-2524-2019-1514-1211-76-0
I0100000shamtrs1101rdOP-IMM

Comparação

SLT Especificação: Base RV32I

Set if Less Than (Defina se Menor que).

Verifica se o valor armazenado no registrador rs1 é menor que o valor armazenado no registrador rs2, considerandoque são complemento de dois, em caso positivo, armazena 1 no registrador de destino rd, caso contrário, armazena 0.

Formato

asm
slt rd, rs1, rs2

Implementação

c
x[rd] = x[rs1] < x[rs2]

Sintaxe

Tabela SLT - Tabela com sintaxe da instrução SLT.
Tipo31-2524-2019-1514-1211-76-0
R0000000rs2rs1010rdOP

SLTI Especificação: Base RV32I

Set if Less Than Immediate (Defina se Menor que Imediato).

Verifica se o valor armazenado no registrador rs1 é menor que o imediato com extensão de sinal, considerando que são complemento de dois, em caso positivo, armazena 1 no registrador de destino rd, caso contrário, armazena 0.

Formato

asm
slti rd, rs1, immediate

Implementação

c
x[rd] = x[rs1] < sext(immediate)

Sintaxe

Tabela SLTI - Tabela com sintaxe da instrução SLTI.
Tipo31-2019-1514-1211-76-0
Iimm[11:0]rs1010rdOP-IMM

SLTIU Especificação: Base RV32I

Set if Less Than Immediate Unisgned (Defina se Menor que Imediato Sem Sinal).

Verifica se o valor armazenado no registrador rs1 é menor que o imediato com extensão de sinal, considerando que são sem sinal, em caso positivo, armazena 1 no registrador de destino rd, caso contrário, armazena 0.

Formato

asm
slti rd, rs1, immediate

Implementação

c
x[rd] = x[rs1] < sext(immediate)

Sintaxe

Tabela SLTIU - Tabela com sintaxe da instrução SLTIU.
Tipo31-2019-1514-1211-76-0
Iimm[11:0]rs1011rdOP-IMM

SLTU Especificação: Base RV32I

Set if Less Than Unsigned (Defina se Menor que Sem Sinal).

Verifica se o valor armazenado no registrador rs1 é menor que o valor armazenado no registrador rs2, considerando que são valores sem sinal, em caso positivo, armazena 1 no registrador de destino rd, caso contrário, armazena 0.

Formato

asm
sltu rd, rs1, rs2

Implementação

c
x[rd] = x[rs1] < x[rs2]

Sintaxe

Tabela SLTU - Tabela com sintaxe da instrução SLTU.
Tipo31-2524-2019-1514-1211-76-0
R0000000rs2rs1011rdOP

Desvio Incondicional

JAL Especificação: Base RV32I

Jump and Link (Salta e Vìncula).

Escreve o endereço da próxima instrução (PC+4) no registrador de destino rd e modifica o PC para o valor atual somado ao offset com extensão de sinal. Se rd for omitido, o valor de retorno é armazenado em x1.

Formato

asm
jal rd, offset

Implementação

c
x[rd] = pc+4; pc += sext(offset)

Sintaxe

Tabela JAL - Tabela com sintaxe da instrução JAL.
Tipo31 - 1211 - 76 - 0
Joffset[20,10:1,11,19:12]rd1101111

JALR Especificação: Base RV32I

Jump and Link Register (Salta e Vìncula Registrador).

Realiza um cópia do PC para rs1 + sext(offset), mascara_bit_ menos significativo do endereço resultante e armazena o endereço anterior de PC+4 no registrador de destino rd. Se rd for omitido, o valor é armazenado em x1.

Formato

asm
jalr rd, offset(rs1)

Implementação

c
t =pc+4; pc=(x[rs1]+sext(offset))&1; x[rd]=t

Sintaxe

Tabela JALR - Tabela com sintaxe da instrução JALR.
Tipo31-2019-1514-1211-76-0
Ioffset[11:0]rs1000rd1100111

Desvio Condicional

BEQ Especificação: Base RV32I

Branch if Equal (Desvia se Igual)

Verifica se o valor armazenado no registrador rs1 é igual ao valor armazenado no registrador rs2, em caso positivo, modifica o PC para o valor atual somado ao offset com extensão de sinal.

Formato

asm
beq rs1, rs2, offset

Implementação

c
if (rs1 == rs2) pc += sext(offset)

Sintaxe

Tabela BEQ - Tabela com sintaxe da instrução BEQ.
Tipo31 - 2524 - 2019 - 1514 - 1211 - 76 - 0
Boffset[12,10:5]rs2rs1000offset[4:1,11]BRANCH

BNE Especificação: Base RV32I

Branch if Not Equal (Desvia se Não Igual)

Verifica se o valor armazenado no registrador rs1 é diferente do valor armazenado no registrador rs2, em caso positivo, modifica o PC para o valor atual somado ao offset com extensão de sinal.

Formato

asm
bnq rs1, rs2, offset

Implementação

c
if (rs1 != rs2) pc += sext(offset)

Sintaxe

Tabela BNE - Tabela com sintaxe da instrução BNE.
Tipo31 - 2524 - 2019 - 1514 - 1211 - 76 - 0
Boffset[12,10:5]rs2rs1001offset[4:1,11]BRANCH

BLT Especificação: Base RV32I

Branch if Less Than (Desvia se Menor que)

Verifica se o valor armazenado no registrador rs1 é menor que o valor armazenado no registrador rs2, considerando que são números em complemento de dois, em caso positivo, modifica o PC para o valor atual somado ao offset com extensão de sinal.

Formato

asm
blt rs1, rs2, offset

Implementação

c
if (rs1 < rs2) pc += sext(offset)

Sintaxe

Tabela BLT - Tabela com sintaxe da instrução BLT.
Tipo31 - 2524 - 2019 - 1514 - 1211 - 76 - 0
Boffset[12,10:5]rs2rs1100offset[4:1,11]BRANCH

BGE Especificação: Base RV32I

Branch if Greater Than or Equal (Desvia se Maior ou Igual que)

Verifica se o valor armazenado no registrador rs1 é maior ou igual ao valor armazenado no registrador rs2, considerando que são números em complemento de dois, em caso positivo, modifica o PC para o valor atual somado ao offset com extensão de sinal.

Formato

asm
bge rs1, rs2, offset

Implementação

c
if (rs1 >= rs2) pc += sext(offset)

Sintaxe

Tabela BGE - Tabela com sintaxe da instrução BGE.
Tipo31 - 2524 - 2019 - 1514 - 1211 - 76 - 0
Boffset[12,10:5]rs2rs1101offset[4:1,11]BRANCH

BLTU Especificação: Base RV32I

Branch if Less Than Unsigned (Desvia se Menor que Sem Sinal)

Verifica se o valor armazenado no registrador rs1 é menor ao valor armazenado no registrador rs2, considerando que são números sem sinal, em caso positivo, modifica o PC para o valor atual somado ao offset com extensão de sinal.

Formato

asm
bltu rs1, rs2, offset

Implementação

c
if (rs1 < rs2) pc += sext(offset)

Sintaxe

Tabela BLTU - Tabela com sintaxe da instrução BLTU.
Tipo31 - 2524 - 2019 - 1514 - 1211 - 76 - 0
Boffset[12,10:5]rs2rs1110offset[4:1,11]BRANCH

BGEU Especificação: Base RV32I

Branch if Greater or Equal Than Unsigned (Desvia se Maior ou Igual que Sem Sinal)

Verifica se o valor armazenado no registrador rs1 é maior ou igual ao valor armazenado no registrador rs2, considerando que são números sem sinal, em caso positivo, modifica o PC para o valor atual somado ao offset com extensão de sinal.

Formato

asm
bgeu rs1, rs2, offset

Implementação

c
if (rs1 >= rs2) pc += sext(offset)

Sintaxe

Tabela BGEU - Tabela com sintaxe da instrução BGEU.
Tipo31 - 2524 - 2019 - 1514 - 1211 - 76 - 0
Boffset[12,10:5]rs2rs1111offset[4:1,11]BRANCH

Busca na Memória

LB Especificação: Base RV32I

Load Byte (Carrega Byte).

Carrega um byte da memória no endereço rs1 + sext(offset) e armazena o valor no registrador de destino rd, com extensão de sinal.

Formato

asm
lb rd, offset(rs1)

Implementação

c
x[rd] = sext(M[x[rs1] + sext(offset)][7:0])

Sintaxe

Tabela LB - Tabela com sintaxe da instrução LB.
Tipo31-2019-1514-1211-76-0
Ioffset[11:0]rs1000rdLOAD

LH Especificação: Base RV32I

Load Halfword (Carrega Halfword).

Carrega dois bytes da memória no endereço rs1 + sext(offset) e armazena o valor no registrador de destino rd, com extensão de sinal.

Formato

asm
lh rd, offset(rs1)

Implementação

c
x[rd] = sext(M[x[rs1] + sext(offset)][15:0])

Sintaxe

Tabela LH - Tabela com sintaxe da instrução LH.
Tipo31-2019-1514-1211-76-0
Ioffset[11:0]rs1001rdLOAD

LBU Especificação: Base RV32I

Load Byte Unsigned (Carrega Byte Sem Sinal).

Carrega um byte da memória no endereço rs1 + sext(offset) e armazena o valor no registrador de destino rd, com extensão de zero.

Formato

asm
lbu rd, offset(rs1)

Implementação

c
x[rd] = M[x[rs1] + sext(offset)][7:0]

Sintaxe

Tabela LBU - Tabela com sintaxe da instrução LBU.
Tipo31-2019-1514-1211-76-0
Ioffset[11:0]rs1100rdLOAD

LHU Especificação: Base RV32I

Load Halfword Unsigned (Carrega Halfword Sem Sinal).

Carrega dois bytes da memória no endereço rs1 + sext(offset) e armazena o valor no registrador de destino rd, com extensão de zero.

Formato

asm
lhu rd, offset(rs1)

Implementação

c
x[rd] = M[x[rs1] + sext(offset)][15:0]

Sintaxe

Tabela LHU - Tabela com sintaxe da instrução LHU.
Tipo31-2019-1514-1211-76-0
Ioffset[11:0]rs1101rdLOAD

LW Especificação: Base RV32I

Load Word (Carrega Word).

Carrega quatro bytes da memória no endereço rs1 + sext(offset) e armazena o valor no registrador de destino rd.

Formato

asm
lw rd, offset(rs1)

Implementação

c
x[rd] = sext(M[x[rs1] + sext(offset)][31:0])

Sintaxe

Tabela LW - Tabela com sintaxe da instrução LW.
Tipo31-2019-1514-1211-76-0
Ioffset[11:0]rs1010rdLOAD

Escrita na Memória

SB Especificação: Base RV32I

Store Byte (Armazena Byte).

Armazena o byte menos significativo do valor armazenado no registrador rs2 na memória no endereço rs1 + sext(offset).

Formato

asm
sb rs2, offset(rs1)

Implementação

c
M[x[rs1] + sext(offset)] = x[rs2][7:0]

Sintaxe

Tabela SB - Tabela com sintaxe da instrução SB.
Tipo31-2524-2019-1514-1211-76-0
Soffset[11:5]rs2rs1000offset[4:0]STORE

SH Especificação: Base RV32I

Store Halfword (Armazena Halfword).

Armazena os dois bytes menos significativo do valor armazenado no registrador rs2 na memória no endereço rs1 + sext(offset).

Formato

asm
sh rs2, offset(rs1)

Implementação

c
M[x[rs1] + sext(offset)] = x[rs2][15:0]

Sintaxe

Tabela SH - Tabela com sintaxe da instrução SH.
Tipo31-2524-2019-1514-1211-76-0
Soffset[11:5]rs2rs1001offset[4:0]STORE

SW Especificação: Base RV32I

Store Word (Armazena Word).

Armazena os quatro bytes menos significativo do valor armazenado no registrador rs2 na memória no endereço rs1 + sext(offset).

Formato

asm
sw rs2, offset(rs1)

Implementação

c
M[x[rs1] + sext(offset)] = x[rs2][31:0]

Sintaxe

Tabela SW - Tabela com sintaxe da instrução SW.
Tipo31-2524-2019-1514-1211-76-0
Soffset[11:5]rs2rs1010offset[4:0]STORE

Publicado sob a Licença MIT.