Index

activation record, 1
active-low, 2
adder
    full, 3
    half, 4
addition,
    binary, 5
    hexadecimal, 6
address, memory, 7, 8
    symbolic name for, 9
addressing mode, 10
    base register plus offset, 11
    immediate data, 12, 13
    indexed, 14
    register direct, 15, 16
    rip-relative, 17
adjacency property, 18
algebra
    Boolean, 19
alternating current, 20
ALU, 21
AND, 22
antifuse, 23
Arithmetic Logic Unit, 24
array, 25
ASCII, 26
assembler, 27
assembler directive, 28
    .ascii, 29
    .asciz, 30
    .byte, 31
    .equ, 32
    .globl, 33
    .include, 34, 35
    .long, 36
    .quad, 37
    .space, 38
    .string, 39
    .text, 40
    .word, 41
assembly language, 42
    efficiency, 43
    required, 44
assembly language mnemonic, 45
assignment operator, 46, 47
asynchronous D flip-flop, 48
AT&T syntax, 49

base, 50
base pointer, 51
basic data types, 52
BCD code, 53
Binary Coded Decimal, 54
binary point, 55
bit, 56
bit mask, 57
bitwise logical operators, 58
Boolean algebra, 59
Boolean algebra properties
    associative, 60
    commutative, 61
    complement, 62
    distributive, 63
    idempotent, 64
    identity, 65
    involution, 66
    null, 67
Boolean expressions
    canonical product, 68
    canonical sum, 69
    maxterm, 70
    minterm, 71
    product of maxterms, 72
    product of sums, 73
    product term, 74
    sum of minterms, 75
    sum of products, 76
    sum term, 77
borrow, 78
branch point, 79
bus, 80, 81
    address, 82, 83
    asynchronous, 84
    control, 85, 86
    data, 87, 88
    synchronous, 89
    timing, 90
byte, 91

C-style string, 92
call stack, 93
canonical product, 94
canonical sum, 95
Carry Flag, 96, 97, 98
Central Processing Unit, 99, 100
CF, 101, 102, 103
circuit
    combinational, 104
clock, 105
clock generator, 106
clock pulses, 107
COBOL, 108
comment field, 109
comment line, 110
compile, 111
compiler-generated label, 112
complement, 113
condition codes, 114
control characters, 115
Control Unit, 116
control unit, 117
convert
    binary to decimal, 118
    binary to signed decimal, 119
    hexadecimal to decimal, 120
    signed decimal-to-binary, 121
    unsigned decimal to binary, 122
CPU, 123, 124
    block diagram, 125
    overview, 126
current, 127

D latch, 128
data
    storing in memory, 129
data types, 130
debugger, 131
decimal fractions, 132
decoder, 133
DeMorgan’s Law, 134
device handler, 135
division, 136
do-while, 137
don’t care, 138
DRAM, 139

effective address, 140
electronics, 141
    AC, 142
    amp, 143
    ampere, 144
    battery, 145
    capacitance, 146
    capacitor, 147
    coulomb, 148
    DC, 149
    direct current, 150
    inductance, 151
    inductor, 152
    ohms, 153
    parallel, 154
    passive elements, 155
    power supply, 156, 157
    resistance, 158
    resistor, 159
    series, 160
    time constant, 161
    transient, 162
    voltage, 163
    voltage level, 164
    volts, 165
    watt, 166
ELF, 167
ELF:section, 168
ELF:segment, 169
endian
    big, 170
    little, 171, 172
exception processing cycle, 173
Executable and Linking Format, 174

finite state machine, 175
fixed point, 176
Flags Register, 177
flip-flop
    D, 178
    JK, 179
    T, 180
floating point, 181
    errors, 182
    extended format, 183
    fpn registers, 184
    limitation, 185
    range, 186
    stack, 187
    x87, 188
fractional values, 189
FSM, 190
function
    called, 191, 192
    calling, 193
    designing, 194
    epilogue, 195
    prologue, 196
    writing, 197
functions
    32-bit mode, 198
    64-bit mode, 199

gate
    AND, 200
    NAND, 201
    NOR, 202
    NOT, 203
    OR, 204
    XOR, 205
gate descriptor, 206
gdb, 207
    commands, 208, 209, 210
Gray code, 211

handler, 212
Harvard architecture, 213
hexadecimal, 214, 215
    human convenience, 216

I/O, 217
    devices, 218
    isolated, 219
    memory-mapped, 220, 221
    programming, 222
IDE, 223
identifier, 224, 225
IEEE 754, 226
    exponent bias, 227
    hidden bit, 228
    size, 229
if-else, 230
impedance, 231
implicit argument, 232
Input/Output, 233
instruction
    add, 234, 235
    and, 236
    call, 237
    cbtw, 238, 239
    cmp, 240
    dec, 241
    div, 242
    idiv, 243
    imul, 244
    in, 245, 246
    inc, 247
    ja, 248
    jae, 249
    jb, 250
    jbe, 251
    jg, 252
    jge, 253
    jl, 254
    jle, 255
    jmp, 256
    lea, 257
    leave, 258
    mov, 259
    movs, 260
    movz, 261
    mul, 262
    neg, 263
    or, 264
    pop, 265
    push, 266
    ret, 267
    sal, 268
    sar, 269
    shl, 270
    shr, 271
    sub, 272
    syscall, 273
    test, 274
    xor, 275
instruction execution cycle, 276
instruction fetch, 277
Instruction Pointer, 278
instruction pointer, 279
instruction prefixes, 280
Instruction Register, 281
instruction register, 282
instruction set architecture, 283
instructions
    cmovsf, 284
    cvtsi2sd, 285
    in, 286
    iret, 287
    out, 288
    syscall, 289
    sysret, 290
integer
    signed decimal, 291
    unsigned decimal, 292
Integrated Development Environment, 293
interrupt handler, 294, 295
invert, 296
ISA, 297

label field, 298
least significant digit, 299
library, I/O, 300
line buffered, 301
line-oriented, 302
linker, 303
listing file, 304
literal, 305
local variables, 306, 307, 308
location, memory, 309, 310
logic
    sequential, 311
logic circuit
    combinational, 312
    sequential, 313
logic gate, 314
logical operators, 315
Loop Control Variable, 316

machine code, 317
mantissa, 318
master/slave, 319
maxterm, 320
Mealy machine, 321
member data, 322
member function, 323, 324
Memory, 325, 326
memory
    data allocation, 327
    timing, 328
memory segment:code, 329
memory segment:data, 330
memory segment:heap, 331
memory segment:stack, 332
memory segment:text, 333
minimal product of sums, 334
minimal sum of products, 335
minterm, 336
mnemonic, 337, 338
mode
    32-bit, 339
    64-bit, 340
    compatibility, 341
    IA-32e, 342
    long, 343
Moore machine, 344
most significant digit, 345
multiplexer, 346
multiplication, 347
mux, 348

name mangling, 349
NAND, 350, 351
negating, 352
negation, 353
negative, 354
NOR, 355
normalize, 356
NOT, 357
number systems
    binary, 358, 359
    decimal, 360, 361
    hexadecimal, 362, 363, 364
    octal, 365

object, 366
object file, 367
object, C++, 368
octal, 369
OF, 370, 371, 372
offset, 373
one’s complement, 374
operand field, 375
operation field, 376
OR, 377
Overflow Flag, 378, 379, 380

PAL, 381
parity, 382
    even, 383
    odd, 384
pass
    by pointer, 385
    by reference, 386, 387
    by value, 388, 389
    updates, 390
penultimate carry, 391
pipeline, 392
PLD, 393
positional notation, 394
printf
    calling, 395
printf, 396
    conversion codes, 397
privilege level, 398
procedural programming, 399
product of maxterms, 400
product of sums, 401
product term, 402
program, 403
Programmable Array Logic, 404
Programmable Logic Device, 405
programming
    bit patterns, 406
pseudo op, 407

radix, 408
RAM, 409
Random Access Memory, 410
read, 411, 412
Read Only Memory, 413
real number, 414
record, 415
red zone, 416
reduced radix complement, 417
register
    general-purpose, 418
    names, 419
register file, 420
register storage class, 421
registers, 422, 423
repetition, 424
return address, 425
return value, 426, 427
REX, 428
rflags, 429, 430, 431
ROM, 432, 433
round off, 434

scalar, 435
scanf
    calling, 436
scanf, 437
    conversion codes, 438
section:text, 439
shift bits, 440
    left, 441
    right, 442
shift register, 443
short-circuit evaluation, 444
SIB byte, 445
sign-extension, 446
significand, 447
SIMD, 448
Single Instruction, Multiple Data, 449
SR latch
    Reset, 450
    Set, 451
SRAM, 452
SSE, 453
    scalar instructions, 454
    vector instructions, 455
stack, 456
    discipline, 457
    operations, 458
    overflow, 459
    pointer, 460
    underflow, 461
    viewing, 462
stack frame, 463, 464
stack pointer, 465
stack pointer address, 466
stack protection, 467
state, 468
state diagram, 469
state table, 470
stdio.h, 471
STDOUT_FILENO, 472
struct, 473
    field, 474
    overall size, 475
subsystems, 476
subtraction, 477
    hexadecimal, 478
sum of minterms, 479
sum of products, 480
sum term, 481
switch, 482, 483
system call, 484, 485, 486

this pointer, 487
time constant, 488
toggle, 489
transistor
    drain, 490
    gate, 491
    source, 492
tri-state buffer, 493
truth table, 494, 495
two’s complement, 496
    computing, 497
    defined, 498
two’s complement code, 499
type casting, 500

unistd.h, 501

variable
    automatic, 502
    static, 503
variable argument list, 504
variables
    local, 505
vector, 506, 507
von Neumann bottleneck, 508

while statement, 509
write, 510, 511

x86 architecture, 512