View source code
							
							
						
								Display the source code in dmd/backend/cod2.d from which this
								page was generated on github.
							
						
							Report a bug
							
						
								If you spot a problem with this page, click here to create a
								Bugzilla issue.
							
						
							
								Improve this page
							
							
					
								Quickly fork, edit online, and submit a pull request for this page.
								Requires a signed-in GitHub account. This works well for small changes.
								If you'd like to make larger changes you may want to consider using
								local clone.
							
						Module dmd.backend.cod2
Code generation 2
Includes
- math operators (+ - * / %) and functions (abs, cos, sqrt) - 'string' functions (strlen, memcpy, memset) - pointers (address of / dereference) - struct assign, constructor, destructor
Compiler implementation of the D programming language.
Coverage
https://codecov.io/gh/dlang/dmd/src/master/src/dmd/backend/cod2.d
Functions
| Name | Description | 
|---|---|
| 
									cdabs(cdb, e, pretregs)
								 | Absolute value operator | 
| 
									cdbswap(cdb, e, pretregs)
								 | Bswap operator | 
| 
									cdcom(cdb, e, pretregs)
								 | Complement operator | 
| 
									cdcomma(cdb, e, pretregs)
								 | Comma operator OPcomma | 
| 
									cdcond(cdb, e, pretregs)
								 | ?: operator | 
| 
									cdctor(cdb, e, pretregs)
								 | C++ constructor. | 
| 
									cddctor(cdb, e, pretregs)
								 | D constructor. OPdctor | 
| 
									cdddtor(cdb, e, pretregs)
								 | D destructor. OPddtor | 
| 
									cddiv(cdb, e, pretregs)
								 | Handle divide, modulo and remquo. Note that modulo isn't defined for doubles. | 
| 
									cddtor(cdb, e, pretregs)
								 | OPdtor | 
| 
									cdhalt(cdb, e, pretregs)
								 | |
| 
									cdind(cdb, e, pretregs)
								 | Perform a 'star' reference (indirection). | 
| 
									cdloglog(cdb, e, pretregs)
								 | Do && and || operators. | 
| 
									cdmemcmp(cdb, e, pretregs)
								 | Generate code for memcmp(s1,s2,n) intrinsic. | 
| 
									cdmemcpy(cdb, e, pretregs)
								 | Generate code for memcpy(s1,s2,n) intrinsic. OPmemcpy / \ s1 OPparam / \ s2 n | 
| 
									cdmemset(cdb, e, pretregs)
								 | Generate code for memset(s,value,numbytes) intrinsic. (s OPmemset (numbytes OPparam value)) | 
| 
									cdmul(cdb, e, pretregs)
								 | Handle multiply. | 
| 
									cdneg(cdb, e, pretregs)
								 | OPneg, OPsqrt, OPsin, OPcos, OPrint | 
| 
									cdnot(cdb, e, pretregs)
								 | Handle OPnot and OPbool. | 
| 
									cdorth(cdb, e, pretregs)
								 | Handle operators which are more or less orthogonal ( + - & | ^ ) | 
| 
									cdpost(cdb, e, pretregs)
								 | Post increment and post decrement. | 
| 
									cdrelconst(cdb, e, pretregs)
								 | Get the address of. Is also called by cdstreq() to set up pointer to a structure. | 
| 
									cdshift(cdb, e, pretregs)
								 | Generate code for shift left or shift right (OPshl,OPshr,OPashr,OProl,OPror). | 
| 
									cdstrcmp(cdb, e, pretregs)
								 | Generate code for strcmp(s1,s2) intrinsic. | 
| 
									cdstrcpy(cdb, e, pretregs)
								 | Generate code for strcpy(s1,s2) intrinsic. | 
| 
									cdstreq(cdb, e, pretregs)
								 | Do structure assignments. This should be fixed so that (s1 = s2) is rewritten to (&s1 = &s2). Mebbe call cdstreq() for double assignments??? | 
| 
									cdstrlen(cdb, e, pretregs)
								 | Generate code for intrinsic strlen(). | 
| 
									cdvoid(cdb, e, pretregs)
								 | |
| 
									getoffset(cdb, e, reg)
								 | Load the offset portion of the address represented by e into reg. | 
| 
									idxregm(c)
								 | Determine index registers used by addressing mode. Index is rm of modregrm field. | 
| 
									movOnly(e)
								 | |
| 
									opdouble(cdb, e, pretregs, clib)
								 | Gen code for call to floating point routine. | 
Authors
License
					Copyright © 1999-2024 by the D Language Foundation | Page generated by ddox.