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.
Enghraifft o'r canlynol | formal language |
---|---|
Math | iaith raglennu |
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
golyguGan 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). 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