O código do simulador (versão alfa) pode ser baixado aqui.
Um pequeno tutorial sobre como projetar uma arquitetura usando este simulador pode ser lido no link "Projetando uma Arquitetura" abaixo.
Para conseguir usar satisfatoriamente o simulador há um pré-requisito inapelável: conhecer programação orientada a objetos.
Apresentações (formado Open Document)
PROJETO
EQUIPES DE, NO MÍNIMO 1 E NO MÁXIMO 4 PESSOAS.
Equipes devem ser indicadas por email (degas at uesc dot br), email que deve ser recebido até à meia-noite do dia 24/04/2024.
Equipes compulsórias e equipes espontâneas.
Estando o nome do estudante em alguma equipe até à meia-noite do dia 24/04/2024, este comporá aquela equipe espontaneamente.
Equipes compulsórias serão formadas por Degas com as pessoas cujos nomes não apareçam em nenhuma equipe espontânea até a meia-noite do dia 24/04/2024.
"Degas, minha equipe me abandonou! Tive que fazer sozinho!"
"Degas, os outros componentes da minha equipe nãoi fazem nada. Tudo sou eu quem faz!"
Se algo assim acontece é por um dos dois motivos.
Ou você não escolheu bem suas companhias para formar uma equipe espontânea.
Ou você não escolheu nenhuma equipe.
Em nenhum dos dois casos Degas tem qualquer responsabilidade.
EQUIPES ESPONTÂNEAS
Henrique barreto pereira
Társis Carvalho Barreto
Matheus oliveira capuchinho
Guilherme Crocamo Freire
Wilson Santos Silva Filho
Ítalo Santana Seara
Hingrid Souza Rocha Queiroz
Lucas Luige Costa Miranda
(ARQ 2 / ASS 2)
Christian Menezes Oliveira
Israel Santana dos Anjos
(ARQ 3 / ASS 1)
Rafael Pedreira
Rafael Santos
Igor Campos
Gabriel Prado
(ARQ 1 / ASS 2)
Anderson Morbeck Pires
Douglas Eduardo Rocha Santana
Henrique Cerqueira Fadigas
Breno Gonçalves Piropo
Ezequiel Lobo Oliveira
Gilbert Carmo Macedo
(ARQ 2 / ASS 1)
Paolla Giselle Ribeiro
Mateus Soares dos Santos
ESTHER REZENDE ALVES
Marco Túlio Macêdo
Ylo Bittencourt
EQUIPES COMPULSÓRIAS
MATEUS SILVA LISBOA
HERBERT ANDRADE NASCIMENTO
DEYVID REIS SANTOS
LUIS FELIPE MALTA RIBEIRO
(ARQ1 / ASS1)
JOAO PEDRO ANDRADE LEMOS
THIAGO SOUZA OLIVEIRA
Assembly 1
add %<regA> %<regB> || RegB <- RegA + RegB
add <mem> %<regA> || RegA <- memória[mem] + RegA
add %<regA> <mem> || Memória[mem] <- RegA + memória[mem]
add imm %<regA> || RegA <- imm + RegA
sub <regA> <regB> || RegB <- RegA - RegB
sub <mem> %<regA> || RegA <- memória[mem] - RegA
sub %<regA> <mem> || memória[mem] <- RegA - memória[mem]
sub imm %<regA> || RegA <- imm - RegA
imul <mem> %<RegA> || RegA <- RegA x memória[mem] (produto de inteiros)
imul %<RegA> <mem> || memória[mem] <- RegA x memória[mem] (idem)
imul %<RegA> <RegB> || RegB <- RegA x RegB (idem)
move <mem> %<regA> || RegA <- memória[mem]
move %<regA> <mem> || memória[mem] <- RegA
move %<regA> %<regB> || RegB <- RegA
move imm %<regA> || RegA <- immediate
inc %<regA> || RegA ++
jmp <mem> || PC <- mem (desvio incondicional)
jn <mem> || se última operação<0 então PC <- mem (desvio condicional)
jz <mem> || se última operação=0 então PC <- mem (desvio condicional)
jeq %<regA> %<regB> <mem> || se RegA==RegB então PC <- mem (desvio condicional)
jneq %<regA> %<regB> <mem> || se RegA!=RegB então PC <- mem (desvio condiciona
jgt %<regA> %<regB> <mem> || se RegA>RegB então PC <- mem (desvio condicional)
jlw %<regA> %<regB> <mem> || se RegA<RegB então PC <- mem (desvio condicional)
Assembly 2
add %<regA> %<regB> || RegB <- RegA + RegB
add <mem> %<regA> || RegA <- memória[mem] + RegA
add %<regA> <mem> || Memória[mem] <- RegA + memória[mem]
sub <regA> <regB> || RegB <- RegA - RegB
sub <mem> %<regA> || RegA <- memória[mem] - RegA
sub %<regA> <mem> || memória[mem] <- RegA - memória[mem]
imul <mem> %<RegA> || RegA <- RegA x memória[mem] (produto de inteiros)
imul %<RegA> <mem> || memória[mem] <- RegA x memória[mem] (idem)
imul %<RegA> <RegB> || RegB <- RegA x RegB (idem)
move <mem> %<regA> || RegA <- memória[mem]
move %<regA> <mem> || memória[mem] <- RegA
move %<regA> %<regB> || RegB <- RegA
move imm %<regA> || RegA <- immediate
inc %<regA> || RegA ++
inc <mem> || memória[mem] ++
jmp <mem> || PC <- mem (desvio incondicional)
jn <mem> || se última operação<0 então PC <- mem (desvio condicional)
jz <mem> || se última operação=0 então PC <- mem (desvio condicional)
jnz <mem> || se última operação|=0 então PC <- mem (desvio condicional)
jeq %<regA> %<regB> <mem> || se RegA==RegB então PC <- mem (desvio condicional)
jgt %<regA> %<regB> <mem> || se RegA>RegB então PC <- mem (desvio condicional)
jlw %<regA> %<regB> <mem> || se RegA<RegB então PC <- mem (desvio condicional)
NOTA: A ULA não possui operação de multiplicação. Com isso as operações imul deverão ser implementadas utilizando-se um trecho de memória (previamente reservada pela própria arquitetura), onde residirá um pequeno microprograma (em linguagem de máquina) que executa um laço de execução. Lembrem de salvar os valores dos registradores antes de executar o imul, e de restaurá-los depois. Reserve posições de memória pra isso também.
O projeto da disciplina consiste em projetar diferentes arquiteturas de computadores, considerando os aspectos de sua organização, conforme descrito no material da disciplina.
Cada equipe vai solicitar uma arquitetura diferente para projetar (arquitetura 1, 2 ou 3), além de uma linguagem assembly (1 ou 2).
Note que, idealmente, carda par (arquitetura/assembly) não se repetirá. Assim, quem solicitar primeiro terá preferência.