例如,在C#或Java中,总是有一个main()方法用于运行程序.你怎么称它所在的课程?我将使用的一些想法只是"程序"或程序本身的名称.在这种情况下,什么是传统的?
我想在游戏编程中尝试使用Objective-C.问题是我需要一些工具和库.
我需要的第一件事就是GUI和图形库.
我有什么选择?
我已经编写了一个可以解决这个问题的生成器,但我想知道实现偏离规则的最佳方法.
简而言之:在这种情况下,偏离规则意味着缩进被识别为语法元素.
以下是伪代码的越位规则,用于制作以可用形式捕获缩进的标记器,我不想按语言限制答案:
token NEWLINE
matches r"\n\ *"
increase line count
pick up and store the indentation level
remember to also record the current level of parenthesis
procedure layout tokens
level = stack of indentation levels
push 0 to level
last_newline = none
per each token
if it is NEWLINE put it to last_newline and get next token
if last_newline contains something
extract new_level and parenthesis_count from last_newline
- if newline was inside parentheses, do nothing
- if …Run Code Online (Sandbox Code Playgroud) language-features programming-languages language-design lexical-analysis
我有一个非常糟糕的javascript/flash -interaction kludge.现在我已经决定编写一个可以执行特定操作的Flash应用程序,而无需与javascript交互.
因此我需要在linux中生成flash应用程序,而且我现在没有钱投入adobe(也许从来没有,如果他们的软件一直很糟糕).也不打算在Windows上进行软件开发,一直在那里,结论:这不会有效.
那么,任何解决方案?免费还是开源?
我正在重写我的汇编程序.在此期间,我对实施反汇编感到好奇.我想让它变得简单和紧凑,并且我可以利用这些概念.
可以从操作码确定x86指令编码的其余部分(也可能需要前缀字节,一点).我知道很多人都写过表格.
我对助记符和指令编码不感兴趣,因为那是一个实际的难题.对于每个操作码编号,我需要知道:
sandpile.org有一些我需要的东西,但它的格式不容易解析.
在我开始自己编写和验证这些表之前,我决定写这个问题.你知道这种桌子存在吗?在一种不需要太多努力解析的形式.
b byte
w word
v word or dword (or qword), depends on operand size attribute (0x66)
z word or dword (or dword), depends on operand size attribute
J instruction-relative address (next character describes type)
G instruction group, has modrm-field (next character describes operand type)
R has modrm-field (next two characters describe register and operand type)
M modrm, but operand field must point to memory
O direct offset (next …Run Code Online (Sandbox Code Playgroud) 我知道使用协同程序作为基础并实现玩具调度程序的基础知识.但我认为这是关于整体异步调度程序的过于简化的观点.我的想法中缺少一整套漏洞.
如何防止cpu运行正在运行空闲/等待的调度程序?有些光纤只是睡觉,有些则等待来自操作系统的输入.
我的朋友制作了一个在x86上工作的小型概念验证汇编程序.我决定将它移植到x86_64,但我立即遇到了问题.
我在C中编写了一小段程序,然后编译并objdumped代码.之后我将它插入到我的python脚本中,因此x86_64代码是正确的:
from ctypes import cast, CFUNCTYPE, c_char_p, c_long
buffer = ''.join(map(chr, [ #0000000000000000 <add>:
0x55, # push %rbp
0x48, 0x89, 0xe5, # mov %rsp,%rbp
0x48, 0x89, 0x7d, 0xf8, # mov %rdi,-0x8(%rbp)
0x48, 0x8b, 0x45, 0xf8, # mov -0x8(%rbp),%rax
0x48, 0x83, 0xc0, 0x0a, # add $0xa,%rax
0xc9, # leaveq
0xc3, # retq
]))
fptr = cast(c_char_p(buffer), CFUNCTYPE(c_long, c_long))
print fptr(1234)
Run Code Online (Sandbox Code Playgroud)
现在,为什么每次运行它时这个脚本都会继续执行分段错误?
我还有一个关于mprotect和没有执行标志的问题.据说可以防止缓冲区溢出等大多数基本安全漏洞.但它使用的真正原因是什么?你可以继续写,直到你点击.text,然后将你的指令注入一个漂亮的PROT_EXEC -area.当然,除非你在.text中使用写保护
但那么,为什么到处都有PROT_EXEC?它的.text段是否被写保护不是很有帮助吗?
有一段时间,我一直试图用我从"游戏的实时流体动力学"中剔除的算法来模拟流动的水.问题是我似乎没有用这些算法得出类似水的行为.
我自己,我猜我做错了,那些算法并不适合水样流体.
这些算法我做错了什么?这些算法是否正确?
我在bitbucket存储库中有相关项目.(需要gletools和最新的pyglet才能运行)
我想制作类似于真实乐器音频的声音.问题是我很少知道怎么做到这一点.
我所知道的远离真实乐器的是它们输出的声音很少干净.但是如何产生这种不洁的声音呢?
到目前为止,我已经做到了这一点,它产生了非常简单的声音,我不确定它是否正确地使用了alsa.
import numpy
from numpy.fft import fft, ifft
from numpy.random import random_sample
from alsaaudio import PCM, PCM_NONBLOCK, PCM_FORMAT_FLOAT_LE
pcm = PCM()#mode=PCM_NONBLOCK)
pcm.setrate(44100)
pcm.setformat(PCM_FORMAT_FLOAT_LE)
pcm.setchannels(1)
pcm.setperiodsize(4096)
def sine_wave(x, freq=100):
sample = numpy.arange(x*4096, (x+1)*4096, dtype=numpy.float32)
sample *= numpy.pi * 2 / 44100
sample *= freq
return numpy.sin(sample)
for x in xrange(1000):
sample = sine_wave(x, 100)
pcm.write(sample.tostring())
Run Code Online (Sandbox Code Playgroud) 我在几场比赛中看到了纹理良好的球,行星和其他球形物体,上次在不明飞行物:后果.如果你只是将纹理溅入纬度/经度作为你和w -coordinates你会得到很多丑陋的纹理扭曲到两极.
我认为自己是一种实现具有最小失真的球形地图的方法.通过三角形而不是正方形映射.但我不知道任何算法.如何为这样的球体生成顶点和纹理坐标?
此外,我没有看到从简单的扁平方形图生成完整球形贴图的方法.绘制这样的地图有没有直观的方法没有真正的麻烦?
但是,有没有其他算法来渲染没有或具有最小失真的球体?
光线跟踪和光栅化算法都很有趣.
assembly ×2
linux ×2
python ×2
alsa ×1
asynchronous ×1
c ×1
c# ×1
ctypes ×1
disassembly ×1
flash ×1
graphics ×1
numpy ×1
objective-c ×1
oop ×1
physics ×1
raytracing ×1
scheduling ×1
simulation ×1
textures ×1
x86 ×1
x86-64 ×1