Cod peiriant

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
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 pensaernïaeth 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). 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

Categori:Ieithoedd rhaglennu