Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adicionando Capa ao REAME.md #15

Merged
merged 10 commits into from
Feb 12, 2024
Merged

Adicionando Capa ao REAME.md #15

merged 10 commits into from
Feb 12, 2024

Conversation

ISS2718
Copy link
Collaborator

@ISS2718 ISS2718 commented Feb 8, 2024

Criei uma imagem onde tentei representar o goICMCsim para usarmos de capa.
Também mudei algumas cosias no README.md, principalmente a parte e contribuição.
Adicionei as contribuições de exemplo dadas no REAME.md atual nas issues com as devidas tags, mas ainda precisa ver se estão todas certas e se há alguma que é uma good first issue.

Criei uma "logo" para o goICMCsim e tentei deixar um pouco mais bonito o README
@ISS2718 ISS2718 assigned ISS2718 and unassigned ISS2718 Feb 8, 2024
@ISS2718 ISS2718 added the documentation Improvements or additions to documentation label Feb 8, 2024
@ISS2718
Copy link
Collaborator Author

ISS2718 commented Feb 8, 2024

Ah também tem que ver se eu n abri uma issue que já foi fechada.
Estou em dúvida na issue #11

Copy link
Owner

@lucasgpulcinelli lucasgpulcinelli left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Gostei bastante das mudanças! A única coisa que queria especificar era essa parte da documentação de como adicionar uma nova instrução.

Fora isso oh god tem um commit chamado "emojis" hahahahaah

README.md Outdated
- Daniel Contente Romanzini ([github](https://github.com/Dauboau)), for providing macOS/amd64 builds
# GO ICMC Simulator 🖥️

![GO ICMC Simulator](https://github.com/lucasgpulcinelli/goICMCsim/assets/11618151/da81d732-5cb4-4f41-9128-37ae864ceac9)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pera, você poderia me explicar isso? Eu entendi que esse é o link para a imagem, mas como isso foi gerado, e onde esse asset foi definido? Tem documentação sobre para eu dar uma olhada? Gostei bastante

Copy link
Collaborator Author

@ISS2718 ISS2718 Feb 9, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Acho q é uma "bugfeature" do GitHub KKKKKK
Aqui nas issues vc consegue fazer upload de imagem e pra isso ele faz upload dessa imagem. Só que como usa markdown aqui tbm ele coloca o link da imagem que foi feito upload e aí eu copiei e usei esse link.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

goICMCsim_08_T

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Outra versão da capa.
Mas devem existir outras formas de fazer isso tbm. Porque no repositório tem como definir uma imagem de Social Preview. Inclusive essas imagens já estão na resolução correta pra ser usadas tbm se vc quiser.

README.md Outdated
1. Choose an opcode for your instruction.
2. Add it to the constants list in `processor/Instruction.go`.
3. Add your instruction data to the `AllInstructions` list in the same file, including the opcode, mnemonic string, instruction size, and execution function.
4. Implement the execution function. See the example in the documentation for details.
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Essa documentação está em algum lugar? Eu gosto da ideia de deixar bem explicadinho esses passos para criar uma nova instrução porque é algo que será necessário conforme o processador se tornar mais complexo com o passar do tempo.

Copy link
Collaborator Author

@ISS2718 ISS2718 Feb 9, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ainda não tem a Documentação eu não sei onde colocar o arquivo pra ser sincero. Mas dá pra fazer uma mais simples com o exemplo que você usou no README atual.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How to add/modify instructions in the simulator

  1. Choose an opcode for your instruction.
  2. Add it to the constants list at processor/Instruction.go.
  3. Right below, in the same file, add your instruction data to the AllInstructions list so it can be found and executed by the simulator.
  4. You will need to add four pieces of information:
    • The opcode you just created.
    • An instruction to generate its mnemonic string (if your instruction receives a list of registers, just use genRegM as most instructions, or create a function yourself and add it there).
    • The instruction size in 16-bit words.
    • And a function to execute it.
  5. To make the execution function, you will need a function that takes the processor context and returns an error (usually nil, to indicate everything went right).

An instruction example

Let's create a new instruction, called incmod, that takes a register and adds 1 to it, but if it becomes greater than or equal to another register, it wraps around in the same way a mod would. Basically, incmod rx, ry is equal to rx = (rx+1) % ry.
This instruction is going to have opcode 0b111111, plus three bits for the first register, and three more for the second, resulting in 0b111111xxxyyydddd (where x is the first bits for the first register, y is for the second, and d is a don't care value, meaning an unused 0 or 1).

The entry in AllInstructions will be {OpINCMOD, genRegM("incmod", 2), 1, execINCMOD},, where OpINCMOD is defined above in the constant block as OpINCMOD = 0b111111. genRegM is used with those arguments to define the mnemonic and to say that it has two register opcodes in the usual position. 1 is to say that a single word is necessary to encode the instruction. execINCMOD is defined as follows:

func execINCMOD(pr *ICMCProcessor) error {
    // get the instruction binary data
    inst := pr.Data[pr.PC]

    // remember, those are indices from 0-7, not the actual values
    rx_index := getRegAt(inst, 7) // 7 is the first bit from right to left encoding the register index for rx
    ry_index := getRegAt(inst, 4) // same for ry

    // set the value in rx to the result of our operation
    pr.GPRRegs[rx_index] = (pr.GPRRegs[rx_index] + 1) % pr.GPRRegs[ry_index]

    // no errors happend
    return nil
}

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A gente cria um arquivo pra servir de documentação e coloca essa parte de adicionar uma instrução lá. E vai melhorando essa documentação com o tempo.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

O que eu vi em repositórios grandes é q eles tem um repositório só pra documentação. Acho q é pra quando alguém clonar não clonar a documentação junto.

I started the documentation by making the main file (docs/README.md) and the Adding/Modifying Instructions file mentioned in REAME.md.
@ISS2718
Copy link
Collaborator Author

ISS2718 commented Feb 11, 2024

Comecei a documentação.
Coloquei uma área de contribuidores da documentação, mas é só uma sugestão. Se você achar que não precisa porquê o do README.md já é suficiente pode tirar.

@ISS2718
Copy link
Collaborator Author

ISS2718 commented Feb 11, 2024

Eu fiz um sumário usando os links diretos apara cada tópico ou subtópico, mas não sei se funcionou muito bem.
Se você achar que não está funcionando bem dá pra colocar a URL da página no GitHub para cada subtópico assim eu tenho certeza que funciona!

Copy link
Owner

@lucasgpulcinelli lucasgpulcinelli left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adorei a documentação! Eu vou tentar adicionar mais recursos em PRs futuras, mas por agora nós já temos a base para uma boa documentação graças a você.

@lucasgpulcinelli lucasgpulcinelli merged commit 8c5def0 into main Feb 12, 2024
@lucasgpulcinelli lucasgpulcinelli deleted the newREADME.md branch February 12, 2024 16:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
documentation Improvements or additions to documentation
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants