Cod peiriant

Oddi ar Wicipedia
Jump to navigation Jump to search
Monitro iaith peiriant mewn cyfrifiadur W65C816S un-bwrdd, gan arddangos cod dadgynull, yn ogystal â chofrestru prosesydd a chof.

Mae cod peiriant yn rhaglen gyfrifiadurol y gellir ei gweithredu'n uniongyrchol gan uned brosesu ganolog y cyfrifiadur (h.y. y CPU). Mae pob cyfarwyddyd yn achosi i'r CPU i gyflawni tasg benodol iawn, fel llwytho rhaglen, ei gadw, canghenu neu weithrediad ALU ar un neu ragor o unedau o ddata yng nghofrestrau CPU neu ei gof.

Mae cod peiriant yn iaith a sgwennwyd mewn rhifau ac a fwriedir ei rhedeg mor gyflym â phosibl, a gellir ei hystyried yn gynrychiolaeth lefel isaf o raglen gyfrifiadurol ac sy'n ddibynnol ar galedwedd. Er ei bod hi'n bosibl ysgrifennu rhaglenni'n uniongyrchol mewn cod peiriant, mae'n ddiflas a gall gwallau gael eu gosod o fewn y cod. Oherwydd hyn, anaml iawn y gwneir hyn; ymhlith yr eithriadau mae: dad-fygio lefel isel, patsio a chynnull-dadgynull, (assembly language disassembly).

Erbyn 2019 roedd y mwyafrif llethol o raglenni wedi'u hysgrifennu mewn ieithoedd lefel uwch neu iaith gydosod (assembly language). Yna 'cyfieithir' y cod ffynhonnell i god peiriant a ellir ei weithredu, gan teclynnau megis compilers, cydosodwyr (assemblers), a chysylltwyr, gydag un eithriad bwysig: rhaglenni nad ydynt yn cael eu cyfieithu i god peiriant.

Enghraifft[golygu | golygu cod y dudalen]

Gan na cheir (hyd y gwyddys) god a sgwennwyd yn Gymreag, bydd y canlynol yn cynnwys cod Saesneg. Nid ymddengys rhai o'r termau chwaith mewn unrhyw eiriadur, gan gynnwys Geiriadur Bangor.

Mae pensaerniaeth MIPS yn darparu enghraifft o god peiriant, sydd a'i gyfarwyddyd wastad yn 32 bit. Nodir y math cyffredinol o'r cyfarwyddyd gan op (o'r gair operation), y 6-bit uchaf. Nodir math-J (jump) a math-I (neu yn Saesneg: I-type; immediate) o'r cyfarwyddyd fel op. Mae cyfarwyddyd math-R (register) yn cynnwys maes ychwanegol, sef funct, er mwyn adnabod yr union gweithrediad (operation). Y maesydd a ddefnyddir yn y mathau hyn yw:


   6      5     5     5     5      6 bits
[  op  |  rs |  rt |  rd |shamt| funct]  R-type
[  op  |  rs |  rt | address/immediate]  I-type
[  op  |        target address        ]  J-type

mae rs, rt, ac rd yn dynodi register operands; mae shamt yn rhoi shift amount; address neu'r maes immediate yn cynnwys operand uniongyrchol.

Er enghraifft, mae ychwanegu cofrestr 1 a 2 ac yn gosod y canlyniadau yn nghofrestr 6, a amgodwyd fel:


[  op  |  rs |  rt |  rd |shamt| funct]
    0     1     2     6     0     32     degol
 000000 00001 00010 00110 00000 100000   deuaidd

Llwytha gwerth i gofrestr 8, gymrwyd o gofgell 68, wedi'r lleoliad a rhestrwyd yng nghofrestr 3:

[  op  |  rs |  rt | address/immediate]
   35     3     8           68           degol
 100011 00011 01000 00000 00001 000100   deuaidd

I newidio i gyfeiriad 1024:

[  op  |        target address        ]
    2                 1024               degol
 000010 00000 00000 00000 10000 000000   deuaidd

Cyfeiriadau[golygu | golygu cod y dudalen]